代码之家  ›  专栏  ›  技术社区  ›  Gonçalo

使用OAuth2.0对用户进行身份验证

  •  0
  • Gonçalo  · 技术社区  · 10 月前

    我正在尝试创建一个小型应用程序,将使用Spotify API。因为它很小,我真的不想在我的端添加任何身份验证,但我仍然想有“会话”。

    我目前的想法是,在Spotify完成OAuth2.0授权码流后,只需将用户ID与访问和刷新令牌一起存储,并使用具有所述用户ID的cookie会话(加密)。然而,这感觉有点好笑,这不是滥用了OAuth2.0吗?我似乎在尝试使用OAuth2.0进行身份验证,有点像OIDC。这种方法是否可以接受,或者是否有更好的处理方式?

    我还想知道,如果在流程完成之前我没有真正执行过任何身份验证,我该如何使用“state”参数。我是否也应该在用户进入OAuth2.0流之前创建一个会话,并在最后检查它?我想我也可能误解了“状态”参数的有用性。

    1 回复  |  直到 10 月前
        1
  •  1
  •   Evert    10 月前

    将身份验证委托给一些外部OAuth2服务器是OAuth2的一个很好的用例,而且经常这样做。OIDC对于许多用例来说都是多余的,它只是受到了IdP的大力推动。

    如果没有OIDC,这意味着你只需要其他方法来查找inuqe用户id,听起来你有这个。将流保持在服务器上(听起来像是这样)并滚动自己的会话ID是个好主意。如果你使用会话系统,你不需要加密任何东西。

    “state”参数允许您确保重定向 < 返回 来自授权端点的请求实际上是由Spotify完成的。您可以在其中放入一个随机字符串,然后进行验证。有些人还会在其中填充其他信息,这在无状态系统中可能很有用(但听起来你并没有无状态系统)。

    如果Spotify支持它,最好使用PKCE,当你这样做的时候,你可以忘记状态参数。