3

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

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

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

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

{ "aud": "urn:relying:party:trust:identifier",
"iss": " http://ms.cloud.com/adfs/services/trust ",
"iat": 1452875046,
"exp": 1452878646 ,
"auth_time": "2016-01-15T15:35:20.248Z",
"authmethod": "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport",
"ver": "1.0",
“appid”:“我的应用程序”}

有人可以告诉我 MyService 从 ADFS 获取访问令牌后如何识别用户吗?

4

2 回答 2

2

依赖方信任中的声明规则需要定义要作为 JWT 令牌的一部分发送的声明。一旦我们添加了电子邮件、姓名等的声明规则,这些信息就会添加到 JWT 访问令牌中。

于 2016-01-24T16:13:45.267 回答
1
  1. 编辑 ADFS 中 Active Directory 的声明提供程序信任以传递电子邮件、姓名等。

    • 打开 ADFS。单击“索赔提供者信托”。单击“活动目录”。 在此处输入图像描述
    • 然后,单击右侧的“编辑声明规则”。 在此处输入图像描述 您现在应该看到“编辑声明”对话框。 在此处输入图像描述 有关说明:添加声明,请参阅此视频。跳到时间索引 2:40。 编辑索赔提供者规则
  2. 编辑信赖方信托的声明。对于电子邮件、姓名等,使用 LDAP 作为规则类型添加匹配的颁发转换规则,并选择 Active Directory 作为属性存储源。为此,请为与您的 JWT 客户端关联的依赖方信任重复上述步骤。 在此处输入图像描述 要添加依赖方声明,请参阅此视频并跳至时间索引 14:35 编辑依赖方声明规则

我建议将 SAM-Account-Name 作为http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name传递。如果您不这样做,我隐约记得 WIF 有问题 /w the ClaimsPrincipal。

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

于 2016-10-25T18:34:13.503 回答