【发布时间】:2019-08-28 05:44:20
【问题描述】:
我目前正在尝试使用 ADFS 2016 验证 Angular 7 应用程序(使用 angular-oauth2-oidc)。到目前为止,它运作良好。当我访问应用程序时,我会被重定向到 ADFS 登录页面,在此我输入我的凭据并获取令牌。
现在,当应用调用 Web API 时,它会在请求标头中发送访问令牌。 ADFS 返回的访问令牌如下所示:
{
"aud": "microsoft:identityserver:xxx",
"iss": "http://xxx/adfs/services/trust",
"iat": 1554561406,
"nbf": 1554561406,
"exp": 1554565006,
"apptype": "Public",
"appid": "xxx",
"authmethod": "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport",
"auth_time": "2019-04-06T12:21:39.222Z",
"ver": "1.0",
"scp": "profile openid"
}
问题在于 Web API 必须知道进行调用的用户的 ID(因为在应用程序级别定义了一些权限)。我看到here 可以向访问令牌添加声明,我做到了。但是,在阅读 Internet 上的文章时,我读到显然不应该使用访问令牌来识别用户,所以我不知道添加 Web API 用来识别用户的声明是否正确。
但是,我读到 here 那
Access Token 拥有的唯一用户信息是用户 ID, 位于子声明中。
但默认情况下,ADFS 不提供“子”令牌。如果我自己添加包含用户电子邮件地址的“子”声明是否正确,还是必须以其他方式继续?
【问题讨论】:
标签: oauth-2.0 openid-connect adfs