MSAL + Azure App Services

4

我之前发布过类似的内容,但是那个帖子变得非常复杂混乱,最终没有得出解决方案。我现在提供一个明确简洁的代码块,并说明我的预期结果。

我希望使用客户端流身份验证来连接Azure App Services后端。 我想使用MSAL来支持Microsoft Accounts (MSA)和AAD accounts。这个问题已经困扰我数周,但还没有找到解决方案。

PublicClientApplication myApp = new PublicClientApplication("registered-app-id-in-apps.dev-portal");                            
string[] scopes = new string[] { "User.Read" };
AuthenticationResult authenticationResult = await myApp.AcquireTokenAsync(scopes);
JObject payload = new JObject();                            
payload["access_token"] = authenticationResult.AccessToken;
payload["id_token"] = authenticationResult.IdToken;                            
user = await MobileService.LoginAsync(MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory, payload);

为什么它不能正常工作?我需要做什么才能使它正常工作?
尝试使用MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory和MobileServiceAuthenticationProvider.Microsoftaccount,但出现了401异常。
--Microsoft账户的应用服务身份验证配置:
客户端ID和客户端密钥与在apps.dev.microsoft.com上显示的一致。
--AAD的应用服务身份验证配置:
客户端ID与在apps.dev.microsoft.com上显示的一致。
发行者URL:https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration 客户端密钥:(空白)

1
我在电脑上创建了一个测试演示,我重现了您的问题。我发现Azure应用程序使用快速设置的Azure Active Directory不支持Azure AD v2.0,但是MSAL需要Azure AD v 2.0。我建议您尝试使用服务器流以启用AD和MSFT帐户登录。您只需要在登录页面中添加两个按钮即可启用不同的帐户。更多详细信息,请参见此网址:https://learn.microsoft.com/zh-cn/azure/app-service-mobile/app-service-mobile-dotnet-how-to-use-client-library#serverflow - Brando Zhang
我的要求之一是需要能够从后端访问MS Graph。使用服务器流允许我在使用AAD登录时访问图表,但对于Microsoft帐户无效。此外,我使用了高级设置而不是快速设置,并且客户端ID是在apps.dev.microsoft.com中注册的应用程序。 - Matt F
1个回答

1
我一直遇到同样的问题,已经在应用服务上设置了Azure Active Directory身份验证,并尝试使用MSAL从WinForms客户端进行身份验证。结果发现,截至本文撰写时,Azure App Service不支持AAD V2(包括MSAL)。在此处找到以下说明here目前,Azure App Services和Azure Functions不支持AAD V2(包括MSAL),请随时查看更新。 因此,除非您自己处理后端代码中的身份验证,否则ADAL似乎是目前唯一可行的选择。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接