我看过很多帖子推荐在Xamarin中使用Xamarin.Auth进行单点登录,但在查看了tutorial和GitHub入门wiki (其中说它支持“授权码流”,但似乎需要来自客户端的密钥才能获得验证码,这不是我正在寻找的)之后,我在网上搜索了"Xamarin.Auth隐式流“和"Xamarin.Auth授权码流”,但都没有结果,在我看来Xamarin auth只支持隐式流。这比连接到后端web服务器应用程序的本机应用程序的授权代码流更不安全,就像我的一样。Xamarin.Auth只能支持隐式流(要求将访问令牌发送到客户端,而不能将client_secret保留在服务器端并将其作为访问令牌检索的一部分发送到服务器端),而不支持授权码流(在这种情况下,客户端将只接收授权码,然后将其发送到服务器,然后服务器将使用客户端机密和可能的PKCE来检索访问令牌),这一理解是否正确?
此外,即使是我见过推荐的其他库的流似乎也会检索客户端的访问令牌- AppAuth支持PKCE,这比没有PKCE的安全性更高,但我看到的示例here、here和here仍然都检索客户端的访问令牌。在我见过的一些帖子(例如here)中也推荐使用Auth0,但我看到的here示例也会检索客户端的访问令牌。
有没有网站不这么做的原因?有没有任何人可以向我推荐的样例或API文档,用于在Xamarin应用程序中仅支持检索授权码客户端的库?(然后是单独的,服务器端,使用客户端秘密来检索访问令牌,不一定使用相同的安全库,因为这不需要是Xamarin代码-这是服务器端部分,我确信这是一个非常标准的东西-例如,概述了Auth0 here)?
发布于 2020-03-04 17:06:01
Xamarin.Auth支持授权码流。正如你在tutorial中发现的,with的OAuth2Authenticator类有一个名为'Client Secret‘的参数,加上其他提供的参数,Xamarin.Auth能够处理授权码交换部分,并将访问令牌直接返回给你,看起来这部分并没有发生,但实际上它发生了。
通过对OAuth2Authenticator源代码的深入研究,VerifyOAuth2FlowResponseType方法显示Xamarin.Auth提供了授权码流和隐式流。有关更详细的信息,您可以与The OAuth 2.0 Authorization Framework一起阅读代码
here是来自客户端的授权代码流程的一个例子。
https://stackoverflow.com/questions/60494530
复制相似问题