1

我正在查看 Sustainsys.Saml2 示例,我发现如果我将 SampleMvcApplication 指向使用 Okta 作为 IdP,则会创建所有相关声明。但是,如果我使用 Okta 作为 SampleIdentityServer3 项目的外部 IdP,我只会看到 openid 声明。是否可以配置 IdentityServer 以将 Saml 令牌中的所有声明传递回客户端应用程序?

4

1 回答 1

0

我不确定这是否适用于您的确切场景,但是我使用以下方法在令牌中向客户端返回所需声明的集合(注意我使用的是 Identity Server 4)。

您可以添加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/

于 2018-05-01T12:56:58.703 回答