了解 Identityserver4 与身份(cookies/令牌,服务器架构)

Hil*_*lls 4 c# asp.net-identity asp.net-core identityserver4

我在理解大局如何整合时遇到了一些问题。对于初学者来说,这是一个很大的话题。

当与 IdentityServer 结合时,Identity 的 cookie 及其所有默认模板/页面在发布令牌时有何意义?

为什么即使在使用 SPA 客户端时,这些页面也包含在所有示例中?能够通过 API 授权/认证/注册不是重点吗?

我看到很多人建议在它自己的项目中应该有IdentityServer,然后在本地网络上单独的用户数据库,这怎么可能?我还没有找到这样的样本。

为什么需要将用户数据库与资源 API 分开,并且 IdentityServer4 和 Identity 的组合不是它自己的 API?

我感谢您的时间和帮助。

小智 5

Identity Server 应该始终是一个单独的项目,并且应该是唯一可以直接访问用户数据库的项目。这里是Identity Server的一个不错的视频和一个较新的一个在这里,和这里是一个伟大的github回购协议的项目几乎完成了我使用。希望能帮助到你。


Sas*_*san 4

想象一个拥有多个网站的组织,每个网站都为用户提供一项服务。通过使用 OAuth/OpenID Connect,该组织将在多个方面受益:

  • 它采用单点登录,这意味着用户只需创建一个帐户,就可以使用该组织的所有服务。
  • 它可以通过订阅和限制(客户端凭据)为其他网站和服务(机器对机器)提供对其资源的访问。例如,该组织可能有一个可由其他应用程序使用的天气 API。
  • 它可以代表用户提供对其资源的访问。例如,它可能有一个流行的相册创建网站,而其他人可能有一个流行的照片编辑器和效果网站。如果这个照片编辑器网站可以从该网站的相册中导入用户的照片(当然要经过他们的同意),那就太好了

架构和流程(我将跳过技术内容和 OAuth 流程):

我们有一个专门的 IdentityServer4 网站,负责创建和记录用户帐户。任何其他人都不应有权访问用户数据库。

现在,该组织的一个网站(我们称之为相册)想要登录用户,会发生以下情况:

  • 首先,它将用户重定向到 IS4 网站
  • 用户登录后,IS4 网站会在浏览器上为其自己的网站设置 cookie(因此,下次用户来到这里时,他/她已登录),并使用令牌或代码将用户重定向回相册
  • 相册在幕后做了很多事情(例如,它可能用令牌交换代码),最后它有一个包含用户信息的令牌。此时相册也会将此信息存储在 cookie 中,以便下次用户来到这里时他/她已登录

现在该组织的另一个网站(我们称之为 Online Drive)想要登录用户:

  • 首先,它将用户重定向到 IS4 网站
  • IS4 网站识别用户(通过之前设置的 cookie)并使用令牌或代码将用户重定向回 Online Drive
  • Online Drive 还在幕后做了很多事情,还将用户的信息存储在 cookie 中,以便下次用户来到这里时他/她已登录

现在第三方网站(我们称之为照片编辑器)想要访问用户相册中的照片:

  • 首先,它将用户重定向到 IS4 网站(并指定要访问的内容)
  • IS4 网站识别用户(通过之前设置的 cookie)并向用户显示同意页面并询问用户是否可以让照片编辑器访问其指定资源(例如相册)
  • 如果用户接受,IS4 将使用令牌或代码将用户重定向回照片编辑器,此时照片编辑器可以调用相册的 API 并访问用户的资源

我希望我有所帮助,我建议阅读《保护外围》一书和《IdentityServer》文档。