Oauth 2.0 是";“资源所有者密码凭据”;OAuth2安全吗?
因此,我正在开发一个API,使用Oauth 2.0 是";“资源所有者密码凭据”;OAuth2安全吗?,oauth-2.0,Oauth 2.0,因此,我正在开发一个API,使用slim/slim和league/oauth2服务器来管理oauth2连接。OAuth2将非常有用,因为我需要在服务之间使用客户端凭据授予 然后,我还开发了一个混合应用程序,使用React Native。此应用程序需要用户使用电子邮件和密码登录,或连接其他服务(如Facebook、Google、Twitter等) 我不知道OAuth2流在这个案例中使用什么。网络上有很多文章说,资源所有者密码凭据不再安全,我们应该使用PKCE的身份验证代码 但我无法发现或理解如何在
slim/slim
和league/oauth2服务器来管理oauth2
连接。OAuth2将非常有用,因为我需要在服务之间使用客户端凭据授予
然后,我还开发了一个混合应用程序,使用React Native。此应用程序需要用户使用电子邮件和密码登录,或连接其他服务(如Facebook、Google、Twitter等)
我不知道OAuth2流在这个案例中使用什么。网络上有很多文章说,资源所有者密码凭据不再安全,我们应该使用PKCE的身份验证代码
但我无法发现或理解如何在第一方应用程序中使用PKCE应用身份验证代码,因为所有文档都提到您需要使用浏览器在重定向\u uri
中获取身份验证代码
我想象的流动是这样的:
用户名
和密码
李>
/request\u token
URI发送{'grant\u type':'password','username':username','password':password,'client\u id':client\u id}
,考虑到它是一个公共应用程序,我们无法发送client\u secret
李>
{“access\u token”:access\u token,“token\u type”:“JWT”,“expires\u in”:LIFE\u SPAN}
,这里我们将使用JWT基于公钥/私钥
生成访问令牌
李>
访问\u令牌
,当其过期时,将执行流以刷新\u令牌
必需的\u uri
[编辑:2]新流程
经过大量的搜索,我找到了一些我认为很有趣的答案。如上所述,我从流中删除了redirect\u url
。看:
code\u验证器
,然后将code\u验证器
散列到code\u质询
,并使用以下参数将其发送到授权服务器:
:表示您的服务器希望收到授权代码response\u type=code
:客户端idclient\u id=xxxx
:第一方应用程序的应用程序完整性检查client\u integrity=xxxx
:如前所述生成的代码质询code\u challenge=xxxx
:普通或S256,取决于质询是普通验证器字符串还是字符串的SHA256哈希。如果省略此参数,服务器将假定为普通code\u challenge\u method=S256
:要验证的用户名username=xxxx
:密码的哈希版本password=xxxx
:应用程序生成的随机字符串(CSRF保护)state=xxxx
code\u挑战
,并使用client\u令牌返回Authorization\u代码
a授权\u代码
和client\u令牌
后,客户端保存client\u令牌
,并立即使用以下参数将authorization\u代码
发送回授权服务器:
:指示此令牌请求的授予类型grant\u type=authorization\u code
:客户端将发送其获得的授权代码code=xxxx
:客户端idclient\u id=xxxx
:客户端最初在授权请求之前生成的PKCE请求的代码验证器code\u verifier=xxxx
access_令牌
access\u token
设置授权头,并始终向每个请求发送Client\u token
,只有在两个值都正确时才会被接受李>
access\u-token
过期,客户端将请求刷新access\u-token
并获取一个新的