gpt4 book ai didi

asp.net-mvc - IdentityServer4 用户管理与单独的 MVC 客户端 (AspNetIdentity)

转载 作者:行者123 更新时间:2023-12-02 00:52:25 24 4
gpt4 key购买 nike

经过大量阅读和反复试验后,我的目标设计开始工作:

  • IdentityServer4(独立于 AspNetIdentity)与 IdentityUser 数据库
  • MVC 客户端(独立),这是用户的前端,目前没有数据库链接
  • 1-n WebAPI 为 MVC 客户端提供功能并拥有自己的数据库

  • 目前,我使用现有的 IdentityUser 数据库并将 IS4 指向该数据库,手动添加角色和声明以进行测试。

    我的问题是关于注册新用户的最佳实践。

    由于 MVC 客户端是用户的前端,因此此处应显示用户注册的链接。

    但是技术上的注册在哪里完成?
  • 我应该在 MVC 客户端(使用默认的 IdentityUser 注册)执行此操作并将数据库指向 IS4 数据库或
  • 我应该在 IS4 应用程序中添加一个注册函数以保持 MVC 客户端不受任何数据库依赖,并将 MVC 客户端“注册”链接指向这个 IS4 注册函数?
  • 最佳答案

    基本上 IdentityServer 有两个职责:

  • 验证用户
  • 授权客户

  • IdentityServer 的“问题”在于用户不限于一个应用程序。虽然 MVC 网站可能是您的前端,但 IdentityServer 不会将用户与特定应用程序相关联。一旦通过身份验证,用户就可以访问所有使用 IdentityServer 作为身份验证服务器的应用程序。

    那么在MVC网站上注册用户有意义吗?可能不会,因为用户也可以访问( future )“mvc2”网站。

    IdentityServer 的创建者承认这一点,因此他们创建了 PolicyServer :

    We think that tightly coupling "Identity and Access Management" in a single solution is the wrong approach. These two concerns should be clearly separated.



    换句话说:身份验证是 IdentityServer 的一部分,(用户的)授权不是。

    回到问题,用户的注册应该由 IdentityServer 管理。因为这是唯一可以访问身份存储的应用程序。此外,用户还可以在不被应用程序重定向的情况下进行注册。

    关键是如何管理(用户的)授权。这实际上不是 IdentityServer 的一部分。我不会详细介绍,因为这超出了问题的范围。

    但要回答你的问题,我会怎么做(包括电子邮件验证,但没有自动登录):

    向 IdentityServer 添加注册功能并实现 ReturnUrl(就像登录的情况一样)。

    在您的 mvc 网站上添加一个链接到 IdentityServer 上的注册功能。让用户在 IdentityServer 中注册,发送电子邮件验证链接,将用户发送到登录页面(保留返回 url),允许用户在注册和登录后重定向回 mvc 网站。

    如何向注册用户添加授权是一个不同的问题。

    关于asp.net-mvc - IdentityServer4 用户管理与单独的 MVC 客户端 (AspNetIdentity),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56618527/

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