用于MicrosoftAccount访问Azure Mobile Service API的桌面客户端流程

时间:2017-08-21 12:34:30

标签: wpf azure-mobile-services msal

我跟随Adrian Halls book创建了一个带有Mobile Service API后端的跨平台应用。我已经成功地从Android,iOS和桌面(WPF)客户端获得了对后端的不安全访问。我正在使用Authorize属性向API添加安全性。我想使用MicrosoftAccount(以前的护照/ Live ID)添加社交认证。

自从Adrian写了他的书以来,Microsoft.Azure.Mobile.Client以及身份验证和授权方面似乎已经开始了。书中给出的样本不再构建,Microsoft的社交身份验证和AAD身份验证似乎已经集成到一个API中。

我花了几天时间搜索最新信息和相关信息,但互联网上似乎有很多东西要么过时,要么只显示使用Facebook或Google从Xamarin客户端进行身份验证或对Azure AD进行身份验证的示例

我正在为桌面应用程序使用.NET 4.7和WPF。我也在使用Microsoft.Azure.Mobile.Client V4.0.1。我的问题是:

  1. 我是否应该使用Microsoft.Identity.Client从我的桌面客户端验证用户;和,

  2. 如果是这样,有人可以指出我需要遵循的客户端流程的示例,具体如何获取我需要传递给使用该新的MobileServiceClient.LoginAsync()函数的授权令牌身份提供者和令牌参数?

2 个答案:

答案 0 :(得分:1)

  

如果是这样,有人可以指出我需要遵循的客户端流程示例,具体说明如何获取需要传递给使用标识提供程序的新MobileServiceClient.LoginAsync()函数的授权令牌。令牌参数?

根据您的要求,您希望client-flow authentication使用MSA。据我所知,MSA身份验证使用Live SDK进行signing users

由于不推荐使用Live SDK,您可以利用OneDrive SDK for CSharp来记录MSA,并且您可以按照详细步骤来实现此目的:

enter image description here

  • 然后您可以按照以下代码添加到WPF应用程序中,如下所示:

    enter image description here

有关OneDrive SDK for CSharp的更多详细信息,您可以参考hereAuthentication Adapter for the OneDrive SDK

<强>更新

这是我的错。我没有提到上面的代码会自动打开一个Web浏览器。根据我的测试,您可以在构建returnUrl实例时将参数https://login.microsoftonline.com/common/oauth2/nativeclient配置为MsaAuthenticationProvider

答案 1 :(得分:0)

我在一艘类似的船上 - 这里是我头脑中的摘要 - 目前有两个安全库正在进行授权 - ADAL和MSAL。

ADAL 这是第一个出来的库,像B2C这样的服务必须分别使用这个库来处理。

MSAL 一个安全框架来统治它们! https://github.com/Azure-Samples/active-directory-xamarin-native-v2 这个图书馆有一个实时许可证,但从技术上讲,它仍处于测试阶段。

前往Mobile.azure.com了解有关创建移动应用程序的最后信息,以及this article on a V2 endpoint

当您注册授权申请时 - 有两个类别a&#34; Converged&#34;应用程序,以及&#34; Live SDK应用程序&#34; (见https://apps.dev.microsoft.com/#/appList) - 为什么他们会选择这些名字是我无法理解的。重要翻译 - 融合应用程序仅适用于MSAL,另一个仅适用于ADAL。这将使您的身份验证工作有很长的路要走,因为应用程序/客户端ID必须与正确的SDK匹配,从而匹配端点。

最后,我们选择继续使用ADAL,因为我们遇到了MSAL问题。然而,MSAL是未来,因为所有服务都将被合并,它应该是一个更容易使用的SDK。

以下是我保留的一些链接,所有这些链接都是指ADAL或MSAL:

http://aka.ms/aadv2

https://azure.microsoft.com/develop/identity

https://docs.microsoft.com/en-ca/azure/active-directory/develop/active-directory-authentication-scenarios#native-application-to-web-api

https://github.com/AzureAD

https://github.com/AzureAD/microsoft-authentication-library-for-dotnet

这些链接大约是一个月 - HTH