Azure AD-区分应用令牌和用户令牌
我正在构建一个受Azure AD Oauth承载令牌身份验证保护的asp.net webapi。我在中间件中使用Azure AD承载令牌验证来验证令牌并提取声明Azure AD-区分应用令牌和用户令牌,azure,azure-active-directory,Azure,Azure Active Directory,我正在构建一个受Azure AD Oauth承载令牌身份验证保护的asp.net webapi。我在中间件中使用Azure AD承载令牌验证来验证令牌并提取声明 我需要区分请求何时来自服务上下文和请求何时来自用户上下文。我知道应用令牌(由AD为应用上下文发布)不会有任何UPN声明,我可以很容易地识别它们,但我想知道它们是否有标准的方法来实现这一点?引用内部论坛: appidacr声明指示执行的客户端身份验证的类型。对于机密客户端,当共享机密(密码)用作客户端机密时,该值为1;当证书用作客户端机密
我需要区分请求何时来自服务上下文和请求何时来自用户上下文。我知道应用令牌(由AD为应用上下文发布)不会有任何UPN声明,我可以很容易地识别它们,但我想知道它们是否有标准的方法来实现这一点?引用内部论坛: appidacr声明指示执行的客户端身份验证的类型。对于机密客户端,当共享机密(密码)用作客户端机密时,该值为1;当证书用作客户端机密时,该值为2。值0表示公共客户端,该客户端不提供客户端机密,因此不向STS进行身份验证。由于机密客户端可以获取用户委托和仅应用程序访问令牌,因此仅appidacr声明无助于区分用户令牌和仅应用程序令牌 如果要区分仅应用程序访问令牌、用户委托访问令牌和Azure AD颁发的id令牌(所有这些令牌都是由同一密钥签名的JWT),请遵循以下指导:
- 仅应用程序令牌将不具有scp声明,而可能具有角色声明。这是记录应用程序权限(相对于委派权限)的地方。有关委派权限和应用程序权限的更多信息,请参阅v1.0和v2.0中的权限和同意
- 许多特定于人类的声明将丢失,例如名称或upn
- sub和oid索赔将是相同的