Azure active directory Azure Active Directory-用户界面>;API-401错误

Azure active directory Azure Active Directory-用户界面>;API-401错误,azure-active-directory,bearer-token,Azure Active Directory,Bearer Token,你好 目前我有一个tenent,它有一个React UI和.NET核心API,由Azure Active Directory保护,没有任何问题 我们最近移动到了一个新的Azure Tenent、新的Active Directory等。我创建了两个新的应用程序注册,一个用于UI的单一应用程序服务,一个用于API。我已将应用程序服务链接到AAD(UI=UI应用程序注册,API=API应用程序注册) 问题是API出现了401错误,我认为在原始tenent中,承载令牌是JWT格式的,但在新实例中不是,我

你好

目前我有一个tenent,它有一个React UI和.NET核心API,由Azure Active Directory保护,没有任何问题

我们最近移动到了一个新的Azure Tenent、新的Active Directory等。我创建了两个新的应用程序注册,一个用于UI的单一应用程序服务,一个用于API。我已将应用程序服务链接到AAD(UI=UI应用程序注册,API=API应用程序注册)

问题是API出现了401错误,我认为在原始tenent中,承载令牌是JWT格式的,但在新实例中不是,我相信它可能是graph API访问密钥

新公寓: 授权:持票人Paqabaaaaad--DLA3VO7QrddgJg7WevrQvEQVbZEMD8su-TIP9K2BTFUTORT7SZGEDI52P6KRYFHGTMJ4YRECGUKZJ2WYLGUHVIZIZ642N7SG0VMU1RKTRZWLAMQ62CASOJCSTXIEF6*****

原公寓: 持票人EYJJ0Exhiioijkv1Kv6ImBzNarHjPrFhfSzFqs1 OwHnsSfJfs1HfZyismTpZcI6ImBzNarHjPrFhfSzFqs1HfSzFqs1HfZyJ9。EYJHdZOiZOi3OiZOiZOiZZOiZOiZZOiZZOiZZZOiZOiZOiZOiZOiZOiZOiZZOiZOiZOiZOiZOiZOiZOiZNyZNyZNyZNyZYNyZYNyZYNyZYNyZYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNNJYXMSWIYWNYYIJOIMISIMFPBYI6IKFTUEYLZUQUFK9MEJHPZH*****

请有足够的人提供一些指导/意见,我哪里出了问题

问候
Paul.

首先,
范围不正确

您应该在API应用程序注册中公开API,然后将其作为权限添加到UI应用程序注册中。你可以参考这个

当您尝试调用
”时https://login.windows.net/{tenant}/oauth2/authorize
端点,您需要指定
范围
以包括
api://{api应用程序注册的应用程序id}
。例如:
api://{api应用程序注册的应用程序id}openid配置文件电子邮件
。然后,访问令牌将用于调用API


最后,对于CORS问题,请在您的web应用中将CORS配置为
*
,以查看它是否有帮助。

尝试执行此步骤:

使用Azure AD获取访问令牌时,需要一个额外的
资源
参数。否则,访问令牌不是JWT

例如,如果您的web API的应用程序ID URI为
https://contoso.com/api
范围名称为
Employees.Read.
,则所有客户机配置应为:

scope:'openid profile email Employees.Read.All',
外部查询参数:{
资源:'https://contoso.com/api'
}
在中,您可以使用附加登录图

“AdditionalLoginParms”:[“响应类型=代码”,“资源”=https://contoso.com/api"]
如果您没有使用自定义应用程序ID URI,它可能看起来像
api://868662dd-3e28-4c7f-b7d5-7ec02ac9c601


您是否尝试过通过Fiddler发送身份验证呼叫并读取原始响应?我想知道除了一个简单的401之外,里面是否有任何有趣的细节…不是真的,只是得到了下面的“你没有权限查看这个目录或页面”。如果我关闭API的Auth,一切都会正常工作。我明白了。如果使用客户端库,我建议您共享您的请求url/正文/查询字符串或代码,以便我们知道您正在调用哪个端点。在原始(迁移前)域设置中,您是否有两个AD应用程序—一个用于应用程序,另一个用于API?或者两者都有一个广告应用程序。我创建了与原始版本相同的后期迁移(但这是由其他人完成的),因此有两个应用程序注册,一个用于ui,一个用于api。