我正在查看Sustainsys.Saml2示例,我发现如果我将SampleMvcApplication指向使用Okta作为IdP来创建所有相关声明。但是,如果我使用Okta作为SampleIdentityServer3项目的外部IdP,我只会看到openid声明。是否有配置IdentityServer以将Saml令牌中的所有声明传递回客户端应用程序?
答案 0 :(得分:0)
我不确定这是否适用于您的确切方案但是我使用以下方法将令人请求的声明集合返回给客户端,并在令牌中注明(我注意到我正在使用Identity Server 4)。 / p>
您可以从客户端添加profile
范围的请求。
然后您可以向用户信息端点发出请求:
options.GetClaimsFromUserInfoEndpoint = true;
在public async Task GetProfileDataAsync(ProfileDataRequestContext context)
的实施中,您可以添加您想要的任何声明。
或者,您可以在客户端配置中设置AlwaysIncludeUserClaimsInIdToken = true
,然后可以在令牌中获取声明。 对于在令牌中包含太多声明而感到厌倦,这可能会导致某些浏览器使用过大。
文档:http://docs.identityserver.io/en/release/reference/profileservice.html
我还发现这篇文章很有用:https://leastprivilege.com/2017/11/15/missing-claims-in-the-asp-net-core-2-openid-connect-handler/