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

未从ADFS 3.0获取OAuth2访问令牌中使用的JWT中的用户身份

梅飞龙
2023-03-14

我以以下方式使用ADFS 3.0中支持的授权流,

  1. 浏览器连接到MyService
  2. MyService将浏览器重定向到ADFS for OAuth
  3. 浏览器连接到ADFS以获取OAuth授权代码
  4. ADFS通过浏览器对用户进行身份验证
  5. ADFS将浏览器重定向回MyService以及授权码
  6. 浏览器连接到MyService并传递授权令牌
  7. MyService连接到ADFS并从授权令牌获取访问令牌

但是,访问令牌缺少用户标识,MyService无法识别用户。

访问令牌具有以下 JWT 信息。

{“aud”:“urn:依赖:方:信任:标识符”,
“iss”:“http://ms.cloud.com/adfs/services/trust“,
”iat“:1452875046,
”exp“:145878646,
”auth_time“:”2016-01-15T15:35:20.248Z“, ”ver“:”1.0“,
”appid“:”my app“}

谁能告诉我,一旦我的服务从ADFS获得访问令牌,它如何识别用户?

共有2个答案

能修谨
2023-03-14

>

  • 在 ADFS 中编辑 Active Directory 的声明提供程序信任,以传递电子邮件、姓名等。

      < li >打开ADFS。点击“索赔提供者信托”。点击“活动目录”。< img src = " https://I . stack . imgur . com/zrqih . png " alt = "在此输入图像描述" > < li >然后,单击右侧的“编辑索赔规则”。< img src = " https://I . stack . imgur . com/kj yap . png " alt = " enter image description here " >您现在应该会看到编辑声明对话框。< img src = " https://I . stack . imgur . com/vms5x . png " alt = " enter image description here " >有关添加索赔的说明,请参考此视频。跳到时间索引2:40。编辑声明提供者规则

    我建议将SAM-Account-Name作为http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name.传递,我隐约记得WIF在索赔原则上有问题,如果你不这样做的话。

    此外,如果尚未启用Active Directory上的声明支持,则必须启用该支持。

  • 田博超
    2023-03-14

    信赖方信任中的声明规则需要定义要作为 JWT 令牌的一部分发送的声明。添加电子邮件、姓名等的声明规则后,信息已添加到 JWT 访问令牌中。

     类似资料:
    • 我想使用上传一个pdf文件到Google Drive,用于自动测试目的。 我已经在Google云平台上创建了一个帐户(获得了客户端ID和机密),并启用了Google Drive API。 谢了。

    • 是否可以使用OAuth 2访问令牌从ForgeRock的OpenAM获取用户详细信息(属于资源所有者的属性)? 我有一个受信任的SPA UI,可以使用资源所有者密码凭据授予类型从OpenAM获取访问令牌。然而,该访问令牌没有提供有关资源所有者的信息。类似地,endpoint没有提供任何信息。 OpenAM似乎有用于列出用户属性的endpoint,但是期望使用JWT作为请求的身份验证手段。 如何从访

    • 相关主题 我将OpenAM配置为Oauth2 Authorization Provider,并通过“OAuth 2.0/OpenID Connect Client”在同一实例上设置了一个OAuth 2 Client。作为范围,我选择“openid”和Response_type“id_token”,这样我的授权URL看起来如下:http://FQDN:PORT/OpenAMTest/oauth2/a

    • 我正在做一个项目(没有生产级别,只是为了提高我的技能),我正在使用JWT来处理身份验证。从我所读到的内容来看,仅使用JWT作为访问令牌是非常不安全的,因此我们需要刷新令牌。因此,在登录时,服务器返回一个访问令牌和一个刷新令牌(我将存储在httpOnly cookie中)。访问令牌在短时间内到期,但刷新令牌在到期时用于获取新令牌。 我的问题是,我们何时使用刷新令牌来获取新的访问令牌?是当用户想要获得

    • 我已经在Oauth2框架中实现了JWT令牌。在实现之后,我想到的查询很少,如下所示: 1.在实现JWT之前,每当用户以相应的访问令牌作为载体访问资源服务器中的API,资源服务器就使用user-info-uriendpoint与auth服务器进行检查,如下所示 在JWT实现之后,我认为资源服务器和auth服务器之间不会发生检查调用,而是使用公钥验证JWT令牌的签名。但是,在获得JWT令牌之后,为了检