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

时间:2016-01-15 18:01:29

标签: oauth-2.0 adfs3.0

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

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

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

      

    {" aud":" urn:依赖:party:trust:identifier",
      " ISS&#34 ;:   " http://ms.cloud.com/adfs/services/trust&#34 ;,
      " iat":1452875046,
      " exp":1452878646,
      " auth_time":" 2016-01-15T15:35:20.248Z",
      " authmethod&#34 ;:   "瓮:绿洲:名称:TC:SAML:2.0:AC:类:PasswordProtectedTransport&#34 ;,
      " ver":" 1.0",
      " appid":" my-app"   }

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

  1. 在ADFS中编辑Active Directory的声明提供程序信任以通过电子邮件,名称等。

    • 打开ADFS。点击"声明提供商信任"。单击" Active Directory"。 enter image description here
    • 然后,点击"编辑声明规则"在右边。 enter image description here 您现在应该看到“编辑声明”对话框。 enter image description here 有关说明:添加声明,请参阅此视频。跳至时间索引2:40。 Edit Claims Provider Rules
  2. 编辑信赖方信托的声明。对于电子邮件,名称等,使用LDAP作为规则类型添加匹配的颁发转换规则,并选择Active Directory作为属性存储源。通过重复上述与您的JWT客户端关联的信赖方信任的步骤来执行此操作。 enter image description here 要添加信赖方声明,请参阅此视频并跳至时间索引14:35 Edit Relying Party Claim Rules

  3. 我建议将SAM-Account-Name传递给http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name。我依稀记得,如果你不这样做,WIF就会有一些问题。

    此外,如果您还没有在Active Directory上启用声明支持,则必须启用声明支持。