【发布时间】:2020-03-28 04:17:45
【问题描述】:
我有以下设置: 2 个客户端应用程序(Xamarin Forms 和 WPF)和一个 Web API(.NET Core 2.0)。 客户端应用程序使用 MSAL 库对 Azure AD(单租户应用程序)进行身份验证。 客户端应用程序通过身份验证后,它们可以使用其身份验证令牌调用 Web API。
Web API 应该验证这个令牌(控制器中的[Authorize])如果它是有效的并且知道什么用户正在调用 API。
验证客户端没有问题,使用AcquireTokenInteractive 和AcquireTokenSilent 方法非常容易。
调用 Web API 时(使用HttpClient,我们在标头中添加标记:client.DefaultRequestHeaders.Add("Bearer", token);。
Startup.cs 类中的 Web API(删除了所有测试代码)配置如下(我知道这还不够):
services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)
.AddAzureADBearer(options => Configuration.Bind("AzureAd", options));
这是您在创建配置了 Azure AD 的新项目时获得的模板。
在 Azure AD 门户中,我们配置了应用程序,并且在客户端应用程序和 Web API 上配置了 ID(TentantId、ClientId/ApplicationId)。
我们已经对 On-Behalf-Of 流程进行了研究,但我不确定这是否是我们需要的流程。
应用程序注册为Single tentant 应用程序,如果将Suggested Redirect Uri 设置为msal[UNIQUE_ID_I_REMOVED_FOR_SECURITY]://auth,则应将其设置为https://login.microsoftonline.com/common/oauth2/nativeclient
我们没有使用 Azure AD 流程的经验,需要一些帮助。如果有人能通过链接、文档、示例代码为我指明正确的方向,将不胜感激。
感谢您的帮助。
【问题讨论】:
标签: c# azure-active-directory asp.net-core-webapi msal