【问题标题】:Desktop client flow for MicrosoftAccount access to Azure Mobile Service APIMicrosoftAccount 访问 Azure 移动服务 API 的桌面客户端流
【发布时间】:2018-01-29 12:55:36
【问题描述】:

我跟随 Adrian Halls book 创建了一个带有移动服务 API 后端的跨平台应用程序。我已经成功地从 Android、iOS 和桌面 (WPF) 客户端获得对后端的不安全访问。我将继续使用 Authorize 属性为 API 添加安全性。我想使用 MicrosoftAccount(以前的护照/Live ID)添加社交身份验证。

自从 Adrian 撰写他的书以来,Microsoft.Azure.Mobile.Client 以及身份验证和授权领域似乎已经发生了变化。书中给出的示例不再构建,微软的社交身份验证和 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() 函数的授权令牌标识提供者和令牌参数?

【问题讨论】:

  • 你解决了这个问题吗,需要进一步的帮助吗?
  • 你好布鲁斯,我已经解决了这个问题,谢谢。最后,我研究了 Microsoft.Azure.Mobile.Client 的源代码,然后编写了自己的桌面版本的身份验证流程中涉及的各种类。我还没有对它进行广泛的测试,但它似乎与 Facebook 的客户端流程配合得很好。

标签: wpf azure-mobile-services msal


【解决方案1】:

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

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

由于 Live SDK 已弃用,您可以利用 OneDrive SDK for CSharp 使用 MSA 进行日志记录,并且您可以按照详细步骤来实现此目的:

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

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

更新:

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

【讨论】:

  • 谢谢布鲁斯。现在我有了我的桌面客户端代码,我将使用您的答案来实现 Microsoft 帐户身份验证。
  • 我已按照上述说明进行操作,我的桌面应用程序现在已成功使用 Microsoft 帐户进行身份验证。我现在遇到的唯一问题是对 AuthenticateUserAsync() 的调用通过打开带有返回 URL 和代码的 Web 浏览器来完成。我该如何阻止这种情况发生?
  • 我更新了我的答案解释,你可以参考我的更新。
  • 我已经提出了后续行动 question,因为此解决方案不提供对用户详细信息(例如名字和电子邮件地址)的访问权限。
【解决方案2】:

我也遇到过类似的情况 - 这是我头脑中的总结 - 目前有两个用于授权的安全库 - ADAL 和 MSAL。

阿达 这是第一个问世的库,像 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 匹配,因此必须匹配端点。

最后,由于我们在使用 MSAL 时遇到了问题,我们选择暂时留在 ADAL。然而,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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多