2017-08-21 103 views
2

我已经关注了Adrian Halls book以创建具有Mobile Service API后端的跨平台应用程序。我已成功获得对Android,iOS和桌面(WPF)客户端工作的后端的不安全访问权限。我正在使用Authorize属性为API添加安全性。我想使用MicrosoftAccount(以前的护照/ Live ID)添加社交认证。MicrosoftAccount访问Azure移动服务API的桌面客户端流程

由于Adrian写了他的书,Microsoft.Azure.Mobile.Client和身份验证和授权的前景似乎已经开始。本书中给出的示例不再构建,微软的社交认证和AAD认证似乎已经集成到一个API中。

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

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

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

  2. 如果有的话可以指点我需要遵循的客户端流程的一个示例,具体如何获取我需要传递给使用的新MobileServiceClient.LoginAsync()函数的授权令牌标识提供者和令牌参数?

+0

你解决了这个问题吗,你需要进一步的帮助吗? –

+0

你好布鲁斯,我已经解决了这个问题谢谢。最后,我研究了Microsoft.Azure.Mobile的源代码。客户端,然后编写我自己的身份验证流程中涉及的各个类的桌面版本。我还没有改变来广泛测试它,但它似乎与Facebook的客户端流程运行良好。 – PhilDotC

回答

1

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

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

由于现场SDK已经过时,你可以利用OneDrive SDK for CSharp与MSA记录,你可以遵循的具体步骤实现这一目的:

enter image description here

  • 然后,你可以遵循下面的代码,并添加到您的WPF应用程序如下:

    enter image description here

有关OneDrive SDK的更多细节CSharp,你可以参考hereAuthentication Adapter for the OneDrive SDK

UPDATE:

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

+0

谢谢布鲁斯。现在我有了我的桌面客户端代码,我将使用您的答案来实现Microsoft帐户身份验证。 – PhilDotC

+0

任何疑虑,随时让我知道。如果我的努力可以帮助您,请将其标记为可以接受的答案。 –

+0

我遵循了上述说明,现在我的桌面应用程序已成功通过Microsoft帐户进行身份验证。我现在遇到的唯一问题是通过打开带有返回URL和代码的Web浏览器来完成对AuthenticateUserAsync()的调用。我如何阻止这种情况发生? – PhilDotC

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

当您注册申请授权 - 有两类一个“融合”的应用程序,以及“实时SDK应用程序”(见https://apps.dev.microsoft.com/#/appList) - 他们为什么会选择这些名字,我是无法理解的。重要翻译 - 融合应用程序只能与MSAL合作,另一个只能与ADAL合作。由于应用程序/客户端ID必须与正确的SDK相匹配,因此终端的认证工作将会很长。

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

这里有一些链接,我一直,都是指以阿达尔或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

相关问题