我已经在Azure Active Directory中注册了Web应用程序。此应用程序(平台)的目标是成为通过自定义控件调用的,用于条件访问的外部声明提供程序。
因此,该应用程序具有以下委托的“必需权限”:
我还在“属性”中将该应用标记为“多租户”,以便其他Azure AD租户可以授予对其访问权限以读取其目录(这就是我打算成为外部声明提供者的方式)。
当前问题是,目标Azure AD租户的管理员授予对我的应用程序的访问权限,并使用授权码重定向回我的应用程序后,尝试将授权码交换为令牌响应时,总是会遇到错误。错误是500,正文为:
{
"error":"server_error",
"error_description":"AADSTS70002: Error validating credentials.\r\nTrace ID: c2d3fe4d-8801-4ef7-b264-5b7fbd091f00\r\nCorrelation ID: f2ae5587-43cd-4c9e-bd58-0b776c0e7cf5\r\nTimestamp: 2018-08-08 08:55:25Z",
"error_codes":[70002],
"timestamp":"2018-08-08 08:55:25Z",
"trace_id":"c2d3fe4d-8801-4ef7-b264-5b7fbd091f00",
"correlation_id":"f2ae5587-43cd-4c9e-bd58-0b776c0e7cf5"
}
我确定client_id(我的AppID),client_secret(我创建的密钥),redirect_uri,grant_type和代码都正确。
我只是不知道为什么我从令牌端点获得500,而没有任何关于我的代码->令牌交换真正出问题的细节。
我应该补充一点,我使用的是“公共”授权和令牌端点(但也尝试了我的租户版本,但行为没有改变):
https://login.microsoftonline.com/common/oauth2/authorize
https://login.microsoftonline.com/common/oauth2/token