【发布时间】:2020-06-20 10:26:45
【问题描述】:
由于一些技术限制,我们在用户登录时进行用户名/密码 AAD 身份验证。
用户将他们的用户名和密码输入到我们的自定义登录页面,我们的应用程序调用IPublicClientApplication.AcquireTokenByUsernamePassword。
我打算使用返回的令牌来调用另一个 Web API 应用程序(也连接到同一个 AAD)。在 Web API 应用程序中,我执行了以下操作:
在启动
services.AddAuthentication(AzureADDefaults.JwtBearerAuthenticationScheme).AddAzureADBearer(options => Configuration.Bind("AzureAd", options));添加如下代码在我的 appsettings.json 文件中包含以下设置
"AzureAd": { "Instance": "https://login.microsoftonline.com/", "ClientId": "<Application ID>", "TenantId": "<Tenant ID>" }- 使用 [Authorize] 保护我的 Web api
然后,我使用 Postman 根据返回的令牌构造对 Web API 的调用。我包括Authorization: Bearer <JWT Token>。 Web API 返回
Bearer error="invalid_token", error_description="签名无效"
我的问题是
- Web API 应用程序可以验证用户名/密码获取的令牌吗?
- 如果令牌可以在 Web API 应用程序中验证,由于我收到上述错误,我该怎么做?
【问题讨论】:
-
您能否检查一下应用程序是否在 AAD 中分配了任何角色?
标签: azure-active-directory asp.net-core-webapi