Signicat OpenId的响应声明不为零

问题描述

我已经按照为Signicat https://github.com/signicat/Quick-start-guide-Authentication-.NET-Core添加的示例创建了Web API。

获取nin信息,我为此添加

 options.Scope.Add("openid");
 options.Scope.Add("profile");
 options.Scope.Add("nin")

但作为回应,我的nin为零。我试图通过以下方式从用户那里获取信息。

var user = HttpContext.User;
name = user.FindFirstValue("name");
nin = user.FindFirstValue("nin");

有什么我想念的吗?

NB:为此客户端配置了此nin,并在通过POSTMAN发出手动请求时获取了nin信息。

解决方法

默认情况下,OpenIDConnect处理程序会阻止所有未知的声明,因此您需要使用类似的代码来明确映射您关注的声明

options.ClaimActions.MapUniqueJsonKey("nin","nin");
options.ClaimActions.MapUniqueJsonKey("gender","gender");
options.ClaimActions.MapUniqueJsonKey("birthdate","birthdate");

您应该检查返回给客户的原始令牌,并首先确认nin索赔确实存在,以确保客户确实获得了所需的索赔。