我正在尝试构建OAUTH2提供者(比如discord/google),用户可以在其中创建一个具有client_id和client_secret的“应用程序”。在我研究的时候,我发现OAUTH2最适合做这种事情。
现在让人困惑的部分是主登录页面是如何工作的?
我是否也有自己的/login路由页面和POST /login来处理自己的用户,这样我就有两个表:
API
api/oauth2/token!!)
-向第三方应用程序发出的令牌(跟踪client_id,以及它们拥有的scope )(由api/oauth2/token!!)发布)。
然后,像/api/user这样的受保护的路由将检查Authorization: Bearer <access_code>并检查两个表,以确定这是否是有效的访问令牌(有点冗余吗?)
因此,我很确定我将如何为客户端(第三方)实现OAuth2流,但我非常困惑主平台(OAUTH2应用程序)如何处理会话(允许用户更改密码和创建新的客户机/应用程序)。
有小费吗?谢谢!
编辑:
好的,根据我的发现,这类事情没有真正的定义。
例如,不和谐有POST /login,他们发送用户名+密码,并处理所有其他2FA。
并分别处理OAUTH2。
因此,简而言之,当您构建自己的OAUTH2服务器/提供者(例如。你想成为谷歌帐户/不和谐)来处理你自己的登录,你可以用任何你想做的方式,然后oauth2路由只能被其他客户使用(第三方?)
现在我正在为我自己的项目做反应-前端,我也想拥有access_token和refresh_token来获得更多的安全性!但是我不认为与OAUTH2-tokens共享同一个表是明智的,因为我的tokes将具有完全的权限,而oauth2令牌的作用域仅限于其他应用程序(客户端、第三方)的请求。
在我的后端中,检查访问令牌是否有效的最好方法是什么?我猜如果存在access_token,请检查这两个表?或者尝试将它们都放在一个表中(或者使用UNION同时获得两者)
发布于 2022-05-26 05:07:40
正如前面在我的编辑中提到的,两个表策略似乎是最好的(遵循不和谐的做法)。
现在没有必要使用联合或两个选择,我们只能有多个token_type,例如:不和谐有:
基于令牌类型,我们知道如何验证提供的access_token。
OAuth2应该只考虑给予第三方访问权,我们自己的登录应该以最适合我们的应用程序的方式构建。
Bearer可以是OAuth2发布的类型,而当用户实际登录到我们的平台(而不是第三方)时,User可能是令牌。
很肯定这是唯一的答案。
发布于 2022-05-22 11:43:36
MyOwnSession -这将保留我自己的平台发布的访问令牌,完全正确地通过API。
OAuthSession -颁发给第三方应用程序的令牌(跟踪client_id及其范围)(由api/OAuth2/token!)
你真的需要单独的代币吗?您的应用程序将充当OAuth2提供者,并可以向您的应用程序和第三方客户端发出具有不同客户ids的令牌。您可以根据客户端ids控制访问权限。
https://stackoverflow.com/questions/72330486
复制相似问题