在理解它如何适合togheter时,我遇到了一些大局问题。对于初学者来说,这是一个很大的话题。
当Identity的cookie及其所有默认模板/页面与IdentityServer结合使用时,当它发布令牌时,它的意义何在?
为什么即使在使用 SPA 客户端时,这些页面也包含在所有示例中?能够通过 API 授权/验证/注册不是重点吗?
我看到很多人建议应该在自己的项目中拥有IdentityServer,然后在本地网络上单独使用用户数据库,这怎么可能?我还没有找到一个样本。
为什么需要将用户数据库与资源 API 分开,组合的 IdentityServer4 和 Identity 不是它自己的 API 吗?
感谢您的时间和帮助。
身份服务器应始终是一个单独的项目,并且它应该是唯一可以直接访问用户数据库的项目。这里有一个关于身份服务器的好视频和一个更新的视频,这里有一个很棒的 github 存储库,其中包含我使用的 IS 项目几乎完成。希望对您有所帮助。
想象一下,一个组织有多个网站,每个网站都为用户提供服务。通过使用OAuth/OpenID Connect,该组织将在以下几个方面受益:
- 它获得单点登录,这意味着用户只需要创建一个帐户 他们将能够使用该组织的所有服务。
- 它可以为其他网站和服务提供对其资源的访问 (机器对机器(与订阅和限制(客户端( 凭据(。例如,此组织可能具有天气 API 可由其他应用程序使用。
- 它可以代表用户提供对其资源的访问权限。例如,它可能有一个流行的相册创建网站,而其他人有一个流行的照片编辑器和效果网站。如果这个照片编辑器网站可以从该网站的相册中导入用户的照片(当然要征得他们的同意(,那就太好 了
架构和流程(我将跳过技术内容和OAuth流程(:
我们有一个专用的 IdentityServer4 网站,负责创建和记录用户帐户。其他人不应有权访问用户数据库。
现在该组织的一个网站(我们称之为相册(想要登录用户,这是发生的事情:
- 首先,它将用户重定向到 IS4 网站 用户
- 登录,IS4网站在浏览器上设置了自己网站的cookie(因此下次用户来这里时,他/她已登录(,并使用令牌或代码将用户重定向回相册
- 相册在幕后做了很多事情(例如,它可能会用令牌交换代码(,最后它有一个包含用户信息的令牌。此时,相册还将此信息存储在cookie中,以便下次用户来这里时,他/她已登录
现在,该组织的另一个网站(我们称之为在线驱动器(想要登录用户:
- 首先,它将用户重定向到 IS4 网站
- IS4 网站识别用户(通过之前设置的 Cookie(,并使用令牌或代码将用户重定向回在线云端硬盘
- 在线驱动器还在幕后做了很多事情,它还将用户的信息存储在cookie中,以便下次用户来这里时,他/她已经登录
现在,第三方网站(我们称之为照片编辑器(想要在相册中访问用户的照片:
- 首先,它将用户重定向到 IS4 网站(并指定它想要访问的内容(
- IS4网站识别用户(通过之前设置的cookie(并向用户显示同意页面,并询问用户是否可以让照片编辑器访问其指定的资源(例如其相册(
- 如果用户接受,IS4 将使用令牌或代码将用户重定向回照片编辑器,此时照片编辑器可以调用相册的 API 并访问用户的资源
我希望我有所帮助,我建议阅读保护外围书籍和身份服务器文档。