首页 > 解决方案 > 如何在 Xamarin Forms App 中实现 SSO?

问题描述

我正在尝试在我的应用程序(Xamarin.Forms App - ios 和 android)中实现 SSO 功能。登录流程是:当用户打开登录页面时,她/他将看到一个按钮作为使用 sso 登录。如果用户选择此按钮,应用程序将为 sso 打开一个 web 视图,当 sso 身份验证完成时(它适用于 airwatch 等 mdm 解决方案),返回一个 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 协议。我需要对 sso 使用 saml 协议。

我怎样才能做到这一点?

标签: xamarin.formsxamarin.androidxamarin.iossingle-sign-onmdm

解决方案


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

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

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

var authResult = await WebAuthenticator.AuthenticateAsync(loginUrl, responseUrl);

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

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


推荐阅读