当前位置: 首页 > 知识库问答 >
问题:

使用JWT承载令牌授予类型打开ID连接

廖君昊
2023-03-14

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

>

  • 使用OpenID Connect协议。规范在这里:(http://openid.net/specs/openid-connect-core-1_0.html)

    使用以下命令调用/oauth2/access_令牌endpoint:

    a.对于资源身份验证:使用grant_type=urn: ietf: params: oauth: Grant-type: jwt-承载这是根据规范(https://datatracker.ietf.org/doc/html/draft-ietf-oauth-jwt-bearer-12)

    b.对于客户端身份验证:使用client_assertion_type=urn: ietf: params: oauth: client-assertion-type: jwt-beger这也是根据上面第#a点中列出的相同规范。

    我的问题是:

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

  • 共有2个答案

    公西毅
    2023-03-14

    规范中没有规定不能支持oidc范围。所以这两种情况都可以推断出来。我的假设是,如果执行身份验证以获得初始JWT,那么返回id_令牌就可以了。不过,我仍在继续对此进行研究。在此之前,如果客户机在令牌调用中发送oidc作用域,则采取同样发送id_令牌的方法。

    魏学智
    2023-03-14

    规范中没有定义这一点,因为这是一个循环引用:OpenID Connect的主要功能是通过交付给客户端的id_令牌向客户端验证用户。id_令牌是一个描述用户和身份验证属性的JWT。客户机从用户处收到所谓的授权,以获得带有该用户信息的id_令牌

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

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

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

     类似资料:
    • 我正在尝试与URL(python客户端)建立websocket连接,该URL需要传入jwt令牌,服务器(在GO中实现)在上侦听该请求,并应该通过解析令牌进行身份验证。 我试着用这部分代码来提出请求- 此请求命中运行此代码以验证此请求的服务器 func ParseFromRequest(req*http.Request,keyFunc-keyFunc)(令牌*令牌,错误){ } 每次,我都会得到“E

    • 我正在尝试升级我的MVC网站以使用新的OpenID Connect标准。OWIN中间件似乎非常健壮,但不幸的是只支持“form_post”响应类型。这意味着Google不兼容,因为它在“#”之后返回url中的所有令牌,因此它们永远不会到达服务器,也永远不会触发中间件。 我自己尝试过在中间件中触发响应处理程序,但似乎根本不起作用,所以我有一个简单的javascript文件,它解析出返回的声明,并将它

    • 当一个人试图使用azure AD承载令牌访问我们的系统时,这个获取和缓存资源令牌的工作流程是不存在的。 所以我的问题是,我如何使用承载令牌来启用它?如何才能像使用OpenIDConnect一样请求额外的资源令牌?是否可以使用ADAL从承载令牌获取授权代码?

    • 我正在学习本教程,以便在我的express API中启用jwt身份验证。https://jonathanmh.com/express-passport-json-web-token-jwt-authentication-beginners/ 一个简单的passport.authenticate调用app.get(“/callback”,passport.authenticate(“jwt”,{se

    • 我有一个具有 oauth2.0 授权授权类型身份验证的 api,其中包含以下步骤 - 获取授权代码的方法,该方法在浏览器中打开需要输入凭据的表单。这将导致一系列后重定向请求,并最终在第三个后响应头中返回授权代码 现在,在主体中发送了一个post请求,其中包含授权类型的授权代码,该授权代码包含客户端凭据和我们从get请求中获得的上述授权代码,并返回访问令牌 这就是邮递员的工作原理。如何使用Rest

    • 寻求有关如何进行微服务授权的建议。 我使用spring/spring boot来提供所有的微服务 在使用JWT令牌到达实际微服务之前,我可以通过Spring Cloud网关进行身份验证,但是在授权方面,我不确定如何做到这一点。 我想在内部处理business microservice中每个endpoint的授权。 有没有办法将JWT令牌传递给微服务,或者我需要调用authserver来获取用户中的