gpt4 book ai didi

login - oauth2 是否只在有第三方授权时使用?

转载 作者:行者123 更新时间:2023-12-04 02:20:39 25 4
gpt4 key购买 nike

我现在正在阅读有关 oauth2 的信息,并试图了解其目的。从我阅读的所有资源来看,似乎 oauth2 仅在具有一些用户的网络应用程序(例如游戏应用程序)并且该应用程序想要访问用户的 Facebook 或 Google 数据(某种数据,例如姓名或电子邮件,等等)。这部分对我来说很清楚。但是,我仍然不清楚的事情如下:

  • 例如:如果我有一个 webapp,并且我希望我的 webapp 的用户使用他们的登录名和密码登录 webapp(就像你使用 gmail 做的那样)而不使用任何第三方。 oauth2 是否也提供此类授权?
  • 我见过 webapps,他们只是让用户使用 ID 和密码进行注册,然后他们对密码进行加盐并将其存储在数据库中。因此,当用户稍后登录时,他们将用户输入的密码加盐,并将此加盐与数据库中的加盐(在注册期间创建)进行比较。如果相等,则用户登录。这对我来说根本不像誓言。所以如果这不是oauth,这是什么标准?像这样的“直接登录”还有其他标准吗?
  • 假设我想允许用户注册并登录我的网站,但让他们通过第三方(如 Facebook 或 Google)登录。这仅用于授权目的,并假设我的应用程序没有计划在他们的 facebook 上发布或请求他们的 facebook 数据,除非我可能想使用他们的 facebook 电子邮件作为我的 web 应用程序的用户 ID。 oauth2 是否提供此类授权?

  • 很抱歉提出这些幼稚的问题,因为我最近才阅读有关 oauth 的信息。

    最佳答案

  • 对于没有 3rd-party 的注册/登录,正如 Kevin 所指出的,每个编程/Web 框架通常都带有一个流行的库,它会生成所有的注册/登录页面、数据库表、流程等,为你。然后,您唯一要做的就是调用库提供的方法,该方法返回当前登录的用户,当您需要确定用户是谁时,在后端代码中。
  • 正如您所指出的,使用加盐密码方案与您的 OAuth2 完全无关。它是一种广泛使用的本地身份验证方案,因为它有很多好处,但我在这里只强调 2 个:

    一种。从用户传输到服务器以通过 Internet 进行身份验证时,密码不是以明文形式发送的,而是以散列格式发送的。这样即使被窃听,密码也不会泄露。

    湾由于每个密码都是加盐的,即使是 2 个相同的密码也不会有相同的哈希值,因为每个密码都有不同的盐。因此,即使密码散列被窃听,也不能在用户使用相同密码的另一个服务中重复使用,因为另一个服务期望使用不同的盐生成密码散列。
  • OAuth2 完全是关于授权(请求用户允许在另一个网络服务上代表她执行某些操作,例如,请求用户允许访问她在 Facebook 上注册的电子邮件地址)。使用它进行身份验证可能不安全(对于 OAuth2 隐式流)。为什么? OAuth2 的最终结果是与权限相关联的访问 key ,例如“访问电子邮件地址的权限”。当您使用 OAuth2 结果(访问 key )进行身份验证时,这意味着您假设“访问电子邮件地址的权限”意味着用户已成功通过 Facebook 进行身份验证,她确实这样做了,因此看起来没问题。但是,想象一下,如果另一个站点也像您一样使用 OAuth2 进行身份验证;如果它收到带有“访问电子邮件地址权限”的访问 key ,它将假定您已通过 Facebook 进行身份验证,因此它会授予您访问属于该电子邮件地址的帐户的权限。您实际上可以使用从用户那里获得的访问 key ,并以她的身份登录其他站点,反之亦然。

  • 要使用 OAuth2 进行身份验证,您需要将其与 OpenID Connect (OIDC) 一起使用,因为 OAuth2-OIDC 的最终结果包含一个 id_token,其中 aud(受众)字段标识访问 key 的对象( https://openid.net/specs/openid-connect-core-1_0.html#IDToken),其中防止访问 key 在非预期的地方被重用。带有易于理解的图表的完整解释在这里: https://www.slideshare.net/KhorSoonHin/the-many-flavors-of-oauth/36?src=clipshare

    使用 OAuth2 进行登录的另一种非常简单但可能令人不安的安全意识方法是使用资源所有者密码凭证,您的网站充当用户和 OAuth2 提供商 (Facebook) 之间的中间人。
  • 显示“使用 Facebook 登录”按钮
  • 当用户点击按钮时,提示用户输入 Facebook 用户名/密码
  • 使用用户名/密码登录 Facebook 以确认身份验证并获取访问 token 。

  • 如果您没有时间深入阅读有关 OAuth2 的内容,也许这种对所有 OAuth2 流程的并排比较会有所帮助。

    Comparing flow diagrams for all four OAuth2 flow/grant types

    这是由 https://blog.oauth.io/introduction-oauth2-flow-diagrams/ 提供的

    关于login - oauth2 是否只在有第三方授权时使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40956418/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com