Azure active directory InteractionRequiredAuthError:AADSTS65001:用户或管理员未同意使用ID为的应用程序

Azure active directory InteractionRequiredAuthError:AADSTS65001:用户或管理员未同意使用ID为的应用程序,azure-active-directory,Azure Active Directory,试图在Azure中创建一个简单的SPA并调用Rest API,我得到了InteractionRequiredAuthError:AADSTS65001:用户或管理员尚未同意使用ID为“xxx”且名为“MySpaApp”的应用程序。为此用户和资源发送交互式授权请求 他做了以下工作: 已注册RESTAPI应用程序 添加了MyRestApi.Tasks.Get的权限,其状态为“我的用户” 添加了任务的作用域。获取 使用SPA应用程序的客户端Id添加了客户端应用程序 已注册SPA应用程序 URI是htt

试图在Azure中创建一个简单的SPA并调用Rest API,我得到了InteractionRequiredAuthError:AADSTS65001:用户或管理员尚未同意使用ID为“xxx”且名为“MySpaApp”的应用程序。为此用户和资源发送交互式授权请求

他做了以下工作:

已注册RESTAPI应用程序 添加了MyRestApi.Tasks.Get的权限,其状态为“我的用户” 添加了任务的作用域。获取 使用SPA应用程序的客户端Id添加了客户端应用程序

已注册SPA应用程序 URI是http://localhost 隐性赠款和混合流动: 已检查访问令牌 已检查ID令牌 支持的帐户类型:任何组织目录 API权限,添加了MyRestApi.Tasks.Get

在企业应用程序MySpaApp中,单击“为我的用户授予管理员许可”

返回MySpaApp,并验证Tasks.Get已被授予

在MySpaApp中,如果我调用msal.acquireTokenSilent并使用“Tasks.Get”作为作用域,我会得到: 用户或管理员未同意使用ID为“xxx”且名为“MySpApp”的应用程序。为此用户和资源发送交互式授权请求

如果我调用范围为“User.Read”的call msal.acquireTokenSilent,我会得到一个令牌

关于故障排除还有什么想法吗?

试试我的方法:

在Azure中注册SPA并检查id令牌访问令牌

然后注册REST Api应用程序并公开该Api,然后将spa应用程序的客户端id添加到REST Api应用程序中

接下来,转到spa应用程序

  • 在“API权限”下,单击“添加权限”,然后单击 “我的API”选项卡
  • 找到您的api应用程序并选择范围
  • 单击“添加权限”
  • 授予管理员许可

然后在浏览器中使用隐式流来获取令牌

https://login.microsoftonline.com/{tenant id}/oauth2/v2.0/authorize?
client_id={client_id}
&response_type=id_token token
&redirect_uri={redirect_uri}
&scope=openid api://{api app client id}/{scope name}
&response_mode=fragment
&state=12345
&nonce=678910
解析令牌:


您的
范围是否设置为:
api://{api-app-client-id}/Tasks.Get
?因此我发现,如果我在SPA注册中创建任意范围名称(公开api),我可以通过在请求中指定该范围来获取令牌。但是,如果我尝试使用与API权限名称相同的名称创建作用域(在公开API中),则会出现“重复值”错误。所以,在一个应用程序中,你不能有一个与权限同名的作用域??好吧,我想就是这样!谢谢我在请求中使用了SPA客户机ID,将其更改为RESTAPI客户机ID,它现在可以工作了,或者至少可以做得更进一步。现在我正在处理一个401,当我调用RESTAPI方法时。你能问一个新问题吗?最好附上您的代码并将我与您的新问题联系起来。我会帮你解决401问题。别忘了解析你的访问令牌并将其附加到问题上。谢谢,但我也解决了401问题。在自定义REST API的appsettings.json中,在“AzureAd”元素中,“ClientId”应该是REST API的AppId。