我正在使用Identity Server4。我有一个外部身份提供程序,我想从id令牌中获取声明。在文档http://docs.identityserver.io/en/release/topics/signin_external_providers.html中,声明所有声明均可用。当我登录时,“主页/安全性”页面上只会显示一些声明。如果我转到“诊断”页面并查看ID令牌,它们就在那。我想在服务返回的id令牌和访问令牌中包含一些声明。我创建了一个Profile服务,以为可以在其中添加它们,但是只有主页/安全页面中显示的声明才可用:
这是我在启动时的外部配置:
services.AddAuthentication()
.AddOpenIdConnect("external", "external", options =>
{
options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
options.SignOutScheme = IdentityServerConstants.SignoutScheme;
options.Authority = "https://external idp address.com";
options.ClientId = "secret";
options.Scope.Clear();
options.Scope.Add("openid profile");
options.SaveTokens = true;
options.TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = "name"
};
options.ClaimActions.MapAll();
});