【问题标题】:Understanding Identityserver4 with Identity (cookies/tokens, server architecture)用身份理解 Identityserver4(cookies/tokens,服务器架构)
【发布时间】:2019-10-19 14:45:31
【问题描述】:

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

Identity 的 cookie 及其所有默认模板/页面在与 IdentityServer 结合使用时有什么意义?

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

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

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

感谢您的宝贵时间和帮助。

【问题讨论】:

    标签: c# asp.net-core asp.net-identity identityserver4


    【解决方案1】:

    Identity Server 应该始终是一个单独的项目,并且应该是唯一可以直接访问用户数据库的项目。 Here 是 Identity Server 上的一个不错的视频,而 here 是一个较新的视频,here 是一个很棒的 github 存储库,其中一个我使用的 IS 项目已经基本完成。希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      想象一个拥有多个网站的组织,每个网站都为用户提供服务。该组织将通过使用 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 文档。

      【讨论】:

      • 嘿,感谢您的简短解释,但您已经完全排除了这里的 netcore 身份。我也在尝试为大局寻找资源,我同时使用身份服务器和 .net 身份。你能指导我找到正确的来源吗?
      • 我认为您应该在深入研究代码之前了解大局,以避免混淆。对于大图,我推荐书籍(一个例子是“保护边界”),对于 OAuth/OIDC 的 ASP.NET Core 实现,我推荐 IdentityServer4 docs
      猜你喜欢
      • 1970-01-01
      • 2022-08-18
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      • 2017-05-28
      • 2022-11-21
      相关资源
      最近更新 更多