xamarin.forms - 如何在 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.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 库。我强烈建议您阅读上面链接的文档。他们非常有帮助。
推荐阅读
- ionic-framework - OpenTok Ionic 3 - 找不到 publisher.cycleVideo 函数
- php - 根据 UID 从 Gmail 获取电子邮件数据
- c# - 如何根据 Windows 窗体中的用户输入运行可变数量的方法
- asciidoc - Asciidoctor 中的自定义元素编号
- r - R 中的 furrr 包不会继续将工作分散到所有核心?
- bash - 如何检查与bash中服务器列表的连接?
- c - 在每个插槽基础上设置 DSCP
- android - 重复条目:构建 .apk 时的 META-INF/
- google-sheets - 如何在 Google Data Studio 中自动刷新 Google Sheets 数据源?
- javascript - 如何在您的网站顶部显示重定向到您的应用商店的智能应用横幅