提问人:Marty 提问时间:11/13/2023 最后编辑:Marty 更新时间:11/14/2023 访问量:52
本地主机和应用服务之间 Azure AD 令牌中的声明之间的差异
Difference between the claims in Azure AD tokens between localhost and App Service
问:
我正在开发一个供内部组织使用的 Blazor Server 应用。这包括具有 Azure AD 的 Azure 租户、托管在 Azure 应用服务上的应用、应用注册...我不会说什么特别的。
我正在从 Azure ID 获取用于身份验证和授权的标识令牌。
在“应用注册”下,我添加了 和 的可选声明。Manage->Token configuration
family_name
given_name
使用如下代码在localhost上进行测试时,我可以读取它们:
user.FindFirst(ClaimTypes.GivenName)?.Value;
// ClaimTypes.GivenName is shorthand for:
// "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"
在 Azure 应用服务上部署时,此代码返回 。必须通过以下方式访问预期值:null
user.FindFirst("given_name")?.Value;
这在本地主机上不起作用...
我还注意到,索赔名称之间甚至索赔数量之间存在进一步的差异。
我希望声明标识符的名称相同,并且完全不明白为什么会有差异。
有人可以详细说明一下吗?
谢谢
Edit:
我得到了一切正常的令牌,但是当列出货币对时,我得到了这个:key, value
user.Claims
localhost:
(key: value)
[...]
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname": "Marty",
"http://schemas.microsoft.com/ws/2008/06/identity/claims/role": "Admin",
[...]
App Service:
[...]
"given_name": "Marty",
"roles": "Admin",
[...]
基本上,在 C# 类中定义并使用长格式的所有 ClaimType 在部署时都会替换为较短的名称,而 localhost 应用则使用较长的名称获取它们。ClaimTypes.[...]
hhtp://schemas.microsoft...
答: 暂无答案
评论
user
user
key
self-contained
framework-dependent
"ver":"2.0"
self-contained
count
aid