xamarin - Xamarin.Auth 是否可以通过服务器端访问令牌检索支持授权代码流,如果不支持,为什么不支持/什么可以?
问题描述
我已经看到很多帖子推荐在 Xamarin 中使用 Xamarin.Auth 进行 SSO,但是查看了教程以及 GitHub 入门wiki(其中说它支持“授权代码流”,但似乎需要来自客户端的密钥来获取身份验证代码,这不是我想要的)并在网络上搜索“Xamarin.Auth 隐式流”毫无结果”和“Xamarin.Auth 授权代码流”,在我看来,Xamarin Auth 仅支持隐式流,这比连接到后端 Web 服务器应用程序的本机应用程序的授权代码流安全性差。我是否正确理解 Xamarin.Auth 只能支持隐式流(要求将访问令牌发送到客户端,并且 client_secret 不能保留在服务器端并作为检索的一部分在服务器端发送访问令牌),
此外,即使与我推荐的其他库的流程似乎也可以检索客户端的访问令牌 - AppAuth 支持 PKCE,这是对没有 PKCE 的安全改进,但我看到的帖子在这里、这里和这里仍然显示了它的示例所有检索客户端上的访问令牌。在我见过的一些帖子(例如这里)中也推荐使用 Auth0,但我在这里看到的示例也检索客户端上的访问令牌。
网站不这样做是有原因的吗?是否有任何人都可以指向我的示例或 API 文档,以获取一个支持仅在 Xamarin 应用程序中检索授权代码客户端的库?(然后分别在服务器端,使用它来使用客户端密钥检索访问令牌,不一定使用相同的安全库,因为它不需要是 Xamarin 代码 - 我相信这个服务器端部分很漂亮标准的东西 - 例如这里为 Auth0 概述的)?
解决方案
Xamarin.Auth 支持授权代码流。正如您在教程中发现的那样,Xamarin.Auth 的 OAuth2Authenticator 类有一个名为“Client Secret”的参数,连同其他提供的参数,Xamarin.Auth 能够处理授权码交换部分并将访问令牌直接返回给您,它看起来这部分没有发生,但实际上它发生了。
深入研究 OAuth2Authenticator源代码,VerifyOAuth2FlowResponseType 方法显示 Xamarin.Auth 提供了授权代码流和隐式流。有关更多详细信息,您可以阅读代码以及OAuth 2.0 授权框架
这是来自客户端的授权代码流示例。
推荐阅读
- python - 如何将列表中的所有整数返回为格式化字符串?
- bash - 用 cut 过滤“dmesg -w”
- javascript - 如何在节点js中对数组进行排序
- javascript - 在 JavaScript 中获取今天从 - 到时间戳
- javascript - 如何在mac上禁用自动填充?
- internet-explorer - 使用 JQuery 在 Internet Explorer 浏览器上设置 cookie
- spring - 在 Spring Security 中设置 antMachers 后,用户可以访问所有端点
- r - 导出文件并基于一列创建两个标题
- java - 如何测试保存文件的方法?
- pdf - 删除 PDF 元数据(删除完整的 PDF 元数据)