Authentication 开放ID连接JWT承载令牌授权类型

Authentication 开放ID连接JWT承载令牌授权类型,authentication,oauth-2.0,openid-connect,aaa-security-protocol,Authentication,Oauth 2.0,Openid Connect,Aaa Security Protocol,我正在编写一个用例,试图实现以下目标: 使用OpenID连接协议。规格在这里:() 使用以下命令对/oauth2/access_令牌端点发出调用: a。对于资源身份验证:使用grant\u type=urn:ietf:params:oauth:grant type:jwt bearer这符合规范() b。对于客户端身份验证:使用client_assertion_type=urn:ietf:params:oauth:client assertion type:jwt bearer这同样符合上述第a

我正在编写一个用例,试图实现以下目标:

  • 使用OpenID连接协议。规格在这里:()

  • 使用以下命令对/oauth2/access_令牌端点发出调用:

    a。对于资源身份验证:使用
    grant\u type=urn:ietf:params:oauth:grant type:jwt bearer
    这符合规范()

    b。对于客户端身份验证:使用
    client_assertion_type=urn:ietf:params:oauth:client assertion type:jwt bearer
    这同样符合上述第a点中列出的相同规范

  • 我的问题是:


    我知道OpenIDConnect规范只讨论“授权码”和“隐式”授权场景。但是,我计划将开放ID规范与JWT承载规范结合使用。换句话说,通过JWT承载授权类型在单个调用中向OAuth2.0令牌api(/access\u token)发送身份验证和授权信息,并接收访问令牌和ID\u令牌作为回报。这是可能的还是我会违反OpenID Connect规范?

    规范中没有定义这一点,因为它是一个循环引用:OpenID Connect的主要功能是通过传递给客户端的
    ID\u令牌对客户端的用户进行身份验证。
    id\u令牌是描述用户和身份验证属性的JWT。客户机从用户处接收所谓的授权,以获得带有该用户信息的
    id\u令牌

    如果授权是一个已经(必然)绑定到用户和身份验证事件的JWT,则无需获得另一个基本上描述相同的JWT(本质上这就是隐式授权实现的)。如果授权未绑定到用户身份验证,则不能将其用于获取
    id\u令牌
    ,因为这将违反OpenID Connect的语义

    因此,JWT承载授权类型在OAuth 2.0(委托授权)场景中有意义,但在OpenID Connect(用户身份验证)场景中没有意义


    当然,仍然可以使用JWT(与用户和/或用户身份验证无关)进行客户端身份验证,但它不是作为授权,而是作为授权码授权中客户端机密的替代方案。

    谢谢!在我的场景中,资源所有者(用户)和客户机之间实际上没有区别。因此,根据我的理解,如果资源所有者/客户端正在使用“JWT-BEARER”授权从授权服务器请求访问令牌,则无需获得具有相同信息的任何“id_令牌”。如果随后将访问令牌传递给另一方,那么,该方获取用户信息的唯一方法就是调用OpenID Connect规范中描述的/userinfo端点。我的理解正确吗?这将混淆OAuth 2.0和OpenID Connect:可以使用访问令牌来获取用户信息,但这并不一定意味着用户(不再)存在而且它确实公开了有关身份验证事件本身(例如时间戳、方法)和其他元数据(例如受众)的信息。另见