我们已经在.net Core 2.1中开发了未经身份验证的Web API。
但是现在我们尝试添加基于Azure AD令牌的身份验证。
我们已经在azure AD中注册了应用,并且在startup.cs文件中做了必要的更改。并添加了授权标签
当我们在邮递员中测试API时,我们生成了令牌,从而得到了HTML格式的Microsoft登录页面。
当我们在浏览器中交叉检查API时,通过提供用户名密码来询问域名用户名和密码,我们就会得到结果。
Azure AD设置或代码中似乎缺少某些配置或设置。
任何人都可以帮忙。否则,任何人都可以共享针对API的基于令牌的身份验证实现的步骤。
答案 0 :(得分:0)
如果您已经拥有api,则应首先在Azure门户中注册一个应用。
在您的api应用程序中,您可以按照以下步骤操作:
Microsoft.AspNetCore.Authentication.AzureAD.UI
在ConfigureServices
函数中注册Azure AD承载身份验证服务:
services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)
.AddAzureADBearer(options => Configuration.Bind("AzureAd", options));
在appsettings.json
中,从Azure门户设置正确的api配置:
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "YourDomain.onmicrosoft.com",
"TenantId": "cb1c3f2e-a2dd-4fde-bf8f-f75ab18b21ac",
"ClientId": "83bf146d-4948-4596-a4b3-b7b2e68ac3e0"
},
可以在Azure门户中找到租户ID,域名和API的ClientId。然后可以在受保护的控制器/操作上添加Authorize
属性。如果您具有多个身份验证架构,则可以authorize with a specific scheme。
您的客户端应用程序将使用OpenID Connect中间件和ADAL / MSAL使用OAuth 2.0协议为登录用户获取JWT承载令牌。承载令牌将传递到Web API,Web API使用JWT承载认证中间件来验证令牌并授权用户。