代码之家  ›  专栏  ›  技术社区  ›  Akobold

xamarin表单上的azure身份验证

  •  0
  • Akobold  · 技术社区  · 6 年前

    我有一个使用Azure ActiveDirectory身份验证的XAMARIN表单应用程序。
    我使用的是NuGet数据包Microsoft.azure.mobile.client版本3.1.0,以及 LoginAsync 类的函数 MobileServiceClient

    Task<MobileServiceUser> LoginAsync(UIViewController view, MobileServiceAuthenticationProvider provider);  
    

    对于ios和类似的android签名。因此,我在ios上的登录功能如下:

    var window = UIKit.UIApplication.SharedApplication.KeyWindow;
    var current = window.RootViewController;
    while(current.PresentedViewController != null) {
        current = current.PresentedViewController;
    }
    var user = await MSC.LoginAsync(current, MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory);
    return user;
    

    使用此函数,库会将应用程序发送到azure活动目录网页进行登录或注册,并返回 MobileServiceUser 实例。

    那个版本按预期工作。

    但是,由于应用程序其他部分的一些问题,我不得不将nuget包更新到一个新版本,在本例中是4.0.2。登录函数将签名更改为

    Task<MobileServiceUser> LoginAsync(MobileServiceAuthenticationProvider provider, JObject token);  
    

    我不知道如何处理最后一个参数,以便拥有和以前一样的行为。经过 null 引发异常并传递新的jobject类不起作用。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Bruce Chen    6 年前

    VaR用户= AsAcess MSC LoginAsync(当前,MaMeServEueAuthLogialServices。

    根据您在微软.Auur.Mask.CudioV3.1.0下进行日志记录的参数,您正在使用 Server-managed authentication 这意味着您的移动后端将帮助您联系相关的身份提供程序并直接接收令牌,然后生成 authenticationToken 并返回到移动客户端以进行后续授权请求。

    AS Azure Mobile Apps Managed SDK Change Log 关于 版本4.0.0 :

    • 支持.NET标准1.4
    • [xamarin.android]支持服务器登录流,以便在android上使用chrome自定义选项卡。它支持OAuth 2.0 pkce扩展。
    • [XAMARI.iOS]支持服务器登录流,以在iOS上使用SavaReVIEW控制器。它支持OAuth 2.0 pkce扩展。
    • [UWP]支持在Windows上使用浏览器的服务器登录流。它支持OAuth 2.0 pkce扩展。

    为了在4.0.0+版本下使用相同的身份验证流程,您需要使用以下方法重载:

    var user = await TodoItemManager.DefaultManager.CurrentClient
                 .LoginAsync(MobileServiceAuthenticationProvider.Facebook, "{url_scheme_of_your_app}");
    

    你可以跟着 here 为Azure门户中的应用程序定义URL方案。对于详细步骤,您可以按照 Add authentication to your Xamarin Forms app .

    任务LogiNasyC(MauleServer认证程序提供程序,JooSoT令牌);

    对于上述方法,过载 LoginAsync 会用到的 Client-managed authentication 对于这种方法,您需要直接与身份提供者联系以获取令牌,然后需要将令牌发送到您的移动后端进行交换。 身份验证令牌 .