c# - 通过 ISecurityTokenValidator.ValidateToken 获得的 ClaimsPrincipal 正在更改 SCP 声明的名称
问题描述
我目前正在使用 Azure Active Directory 访问令牌和 .NET Core 3.1。我请求的访问令牌产生以下声明:
{
...
"scp": "MyScope.Create MyScope.Search"
...
}
但是,在运行访问令牌验证后,声明“scp”的名称更改为“ http://schemas.microsoft.com/identity/claims/scope ”
SecurityToken securityToken;
ClaimsPrincipal claimsPrincipal = tokenValidator.ValidateToken(accessToken, myValidationParameters, out securityToken);
return claimsPrincipal;
此外,正如您在图片中看到的那样,并非所有声明都已更改,有些声明保持不变,如 aud 或 iss,但 scp 更改为“ http://schemas.microsoft ...”(就像这是 v1令牌,但它是 v2)
这是预期的事情,还是我应该配置一些东西,以便声明保持应有的状态。
谢谢!
解决方案
ConfigureServices()
在Startup.cs中还可以设置此选项:
JwtSecurityTokenHandler.DefaultMapInboundClaims = false;
此标志阻止映射,因此您的声明名称不会更改。
推荐阅读
- express - 在 post express js 上,req 正文始终为空
- laravel - Laravel 共享主机 htaccess 尾部斜杠重定向问题
- python - QtCore.Signal 和 SIGNAL 有什么区别?
- tensorflow - 张量流中渐变胶带的问题
- java - 字符串类型的方法 repeat (int) 未定义
- makefile - Makefile 单独的头文件依赖
- python - pyarrow保存python对象
- sql - 如何在for循环中将以前的联合全部划分为多个插入
- javascript - 在Javascript中从下划线编写_.Memoize
- php - 错误:调用未定义的方法 GuzzleHttp\Client::request()