我目前不熟悉OAuth2.0授权代码流程,并且已经阅读了许多有关它的文章,并且目前我仍然不知道如何正确实现它。到目前为止,我对流程的了解:
现在,我仍然感到困惑的是,登录验证应该放在哪里(用户名-密码登录)?在进入OAuth流程之前是否需要进行单独的验证,一旦用户有效,就应该返回到流程?
答案 0 :(得分:0)
登录验证来了(用户名-密码登录)?
OAuth 2.0 NOT an Authentication protocol
The OAuth 2.0 specification defines a delegation protocol
任何使用用户名的用户-密码都在OAuth 2.0之外,您应该查看Open ID Connect,它是基于OAuth 2.0构建的身份验证协议。
Best current Practice for Authorization Code flow用于在OAuth或OpenID Connect上使用PKCE。
答案 1 :(得分:0)
通常的解决方案是使用成熟的安全性库将OAuth 2.0和Open Id Connect从您的代码外部化。当您不熟悉这种类型的安全性时,就会有一个学习过程。我的资源将使您了解如何将它们组合在一起:
您集成的库取决于您所使用的技术堆栈。上面的资源用于单页应用程序和NodeJS API。
答案 2 :(得分:0)
我有一些资源可以解释OAuth 2.0 using Google Sign in as an example。让我尝试根据您的问题重新措辞。
让我们以用户使用“使用Google登录”登录对讲机为例。
/authorize
端点(每个提供者可能不同),该端点将转到其登录页面。authorization_code
重定向回到对讲机(例如,它重定向到https://intercom.com/authcallback?code=XYZ...
)authorization_code
和client_id
和client_secret
(从其在Google的项目中)一起发送,并收到access_token
(通常发送到{{1} }端点)/token
从Google访问用户的个人资料。因此,为回答您的问题,用户可以在OAuth提供程序的页面中输入其电子邮件/密码。请记住, OAuth 2.0没有指定提供者如何验证用户身份。这意味着,OAuth提供者可以通过不同的方式来验证其用户,例如电子邮件/密码,email magic-link, SMS OTP等。您的网站仅应信任OAuth提供者,他们正在为您正确验证用户。>
一些额外的资源可帮助您进一步了解OAuth 2.0: