Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MSAL&x2B;Azure应用程序服务_C#_Azure_Azure Mobile Services_Msal - Fatal编程技术网

C# MSAL&x2B;Azure应用程序服务

C# MSAL&x2B;Azure应用程序服务,c#,azure,azure-mobile-services,msal,C#,Azure,Azure Mobile Services,Msal,我以前曾经发布过这个帖子,但是帖子变得非常广泛和混乱,而且从未达到解决方案。我用一个清晰简洁的代码块和我想要的结果重新发布 我希望对Azure应用程序服务后端使用客户端流身份验证。 我想使用MSAL来支持Microsoft帐户(MSA)和AAD帐户。在这个问题上纠缠了好几个星期,看不出有什么解决办法 PublicClientApplication myApp = new PublicClientApplication("registered-app-id-in-apps.dev-portal")

我以前曾经发布过这个帖子,但是帖子变得非常广泛和混乱,而且从未达到解决方案。我用一个清晰简洁的代码块和我想要的结果重新发布

我希望对Azure应用程序服务后端使用客户端流身份验证。 我想使用MSAL来支持Microsoft帐户(MSA)和AAD帐户。在这个问题上纠缠了好几个星期,看不出有什么解决办法

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);
为什么这样不行? 我要怎么做才能让它工作

获取401异常,请尝试使用MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory以及MobileServiceAuthenticationProvider.Microsoftaccount

--Microsoft帐户的应用程序服务身份验证配置:

ClientID和ClientSecret在apps.dev.microsoft.com中的显示

--AAD的应用程序服务身份验证配置:

ClientID,如apps.dev.microsoft.com中所示

发卡机构URL:


客户端机密:(空白)

在应用程序服务上设置Azure Active Directory身份验证并尝试使用MSAL从WinForms客户端进行身份验证后,出现了相同的问题。事实证明,在撰写本文时,Azure应用程序服务不支持AAD V2(包括MSAL)。找到以下注释:

目前,Azure应用程序服务和Azure功能不支持AAD V2(包括MSAL)。请回来查看更新


因此,ADAL似乎是目前唯一可行的选择,除非您自己在后端代码中处理身份验证。

我已经在我的计算机中创建了一个测试演示,我复制了您的问题。我发现azure应用程序的azure Active Directory使用express设置不支持azure ad v2.0。但MSAL需要azure ad v 2.0。我建议您可以尝试使用服务器流来启用AD和MSFT帐户登录。您只需在登录页面中添加两个按钮即可启用不同的帐户。更多详细信息,您可以参考此url:我的部分要求是我需要能够从后端访问MS Graph。使用服务器流允许我在使用AAD登录时访问图表,但不适用于Microsoft帐户。我还使用了高级设置,而不是express,客户端id是apps.dev.microsoft.com中注册的应用程序。