我跟随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。我的问题是:
我是否应该使用Microsoft.Identity.Client从我的桌面客户端验证用户;和,
如果是这样,有人可以指出我需要遵循的客户端流程的示例,具体如何获取我需要传递给使用该新的MobileServiceClient.LoginAsync()函数的授权令牌身份提供者和令牌参数?
答案 0 :(得分:1)
如果是这样,有人可以指出我需要遵循的客户端流程示例,具体说明如何获取需要传递给使用标识提供程序的新MobileServiceClient.LoginAsync()函数的授权令牌。令牌参数?
根据您的要求,您希望client-flow authentication使用MSA。据我所知,MSA身份验证使用Live SDK进行signing users。
由于不推荐使用Live SDK,您可以利用OneDrive SDK for CSharp来记录MSA,并且您可以按照详细步骤来实现此目的:
通过NuGet安装客户端库:
登录Microsoft Account Developer Center并创建您的应用,添加原生应用平台,然后Register your app with Microsoft Account。
有关OneDrive SDK for CSharp的更多详细信息,您可以参考here和Authentication 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:
https://azure.microsoft.com/develop/identity
https://github.com/AzureAD/microsoft-authentication-library-for-dotnet
这些链接大约是一个月 - HTH