如何在Xamarin Forms应用程序中实现SSO?

Pel*_*ray 5 xamarin.ios single-sign-on mdm xamarin.android xamarin.forms

我正在尝试在我的应用程序(Xamarin.Forms 应用程序 - ios 和 android)中实现 SSO 功能。登录流程是:当用户打开登录页面时,她/他将看到一个使用 sso 登录的按钮。如果用户选择此按钮,应用程序将打开 sso 的 web 视图,并且当 sso 身份验证完成时(它适用于 mdm 解决方案,例如 Airwatch 等),返回一个 SAML 令牌。

我的问题是如何实现这个,如何从 webview 捕获 saml 令牌?实际上,xamarin中有一种方法,因为我在xamarin进化会议上看到了一个视频: https://www.youtube.com/watch ?v=AAAQJgBDK0w&t=1163s

当 AuthTpye 设置为“SAML”(在视频 15:51 秒中)并且在 webview 上使用 Airwatch sso 打开应用程序登录时(在视频 16:45-17:14 秒中),用户可以使用 sso 登录。但我只能找到这个视频。我找不到此实现的任何其他来源。

此外,我看到了一些 Stack Overflow 问题,他们的答案是使用 Xamarin.Auth nuget 包。但Xamarin.Auth使用oauth2.0协议。我需要使用 saml 协议进行 sso。

我怎样才能做到这一点?

Jas*_*ams 0

Xamarin.Essentials 有一个名为“WebAuthenticator”的类,它将为您提供很多帮助。

文档可以在这里找到:https://learn.microsoft.com/en-us/xamarin/essentials/web-authenticator ?tabs=android

它使过程变得非常简单。您只需发送登录请求:

var authResult = await WebAuthenticator.AuthenticateAsync(loginUrl, responseUrl);
Run Code Online (Sandbox Code Playgroud)

“authResult”变量将保存您的令牌和声明。

您还需要实现一个活动或方法(取决于平台)来处理您在上面的代码中作为“responseUrl”传入的自定义 URL,并将响应转发回 Xamarin.Essentials 库。我强烈建议您阅读上面链接的文档。他们非常有帮助。