gpt4 book ai didi

asp.net-mvc - 在客户端应用程序中配置用户授权

转载 作者:行者123 更新时间:2023-12-04 15:51:28 26 4
gpt4 key购买 nike

背景说明

当谈到 Identity Server 4 时,当我想到客户端应用程序中的用户管理设计时,我遇到了一个障碍。

在这一点上,我使用 ASP 身份用户帐户作为其用户存储设置了身份服务器。

我已经构建了用于将用户添加到 Identity Server 用户存储的 UI。

我已经测试设置了一个客户端,它是一个 MVC 应用程序,现在我可以成功地通过 Identity Server 进行身份验证并在我的客户端应用程序中接收 openid 身份 token 。

Identity Server 正在为我的客户端应用程序提供身份验证。

现在,我需要专注于我的应用程序中的授权。这是我卡住的地方,我需要在应用程序本地创建用户,应用程序中的用户权限存储在其中。

我需要将 Identity Server 中的用户链接/关联到客户端应用程序中的用户。

一种方法是将 sub 存储在身份 token 中,作为客户端应用程序数据库 (Asp Identity) 中的用户声明。这样,当用户进行身份验证时,我可以根据 token 中的 sub 在本地数据库中找到它们。

sub 必须是身份服务器用户存储中用户的唯一 ID。这样,如果用户的电子邮件被更改,我们仍然可以链接两个用户帐户。

客户端应用程序中的用户帐户不需要密码或电子邮件地址,它只是用于跨应用程序授权的声明和角色,以及任何其他应用程序特定信息。

问题

在客户端应用程序中创建用户时,Identity Server 和客户端应用程序之间的通信是否必须存在?

  • 我们需要关联两个账户吗?
  • 我们需要确保正在创建的客户端用户帐户也有一个身份服务器用户帐户才能成功通过身份验证吗?

  • 这些任务应该在什么时候完成?我正在寻找有关两个应用程序之间通信流程的一些指导?

    编辑

    客户端应用程序中根本没有用户帐户是否可行?

    我的意思是,用户的所有用户声明都存储在 Identity Server 的用户存储中。

    当客户端通过 IDP 进行身份验证时,它仅请求特定于客户端应用程序的用户声明。

    用户存储中的示例用户声明:-
  • “clientA_role”:“管理员”
  • “clientB_role”:“用户”

  • 客户端应用程序 A 进行身份验证,它只请求范围 clientA_role

    这感觉很糟糕!

    有什么建议?

    最佳答案

    如果您有很多客户端应用程序,那么我推荐的用户管理方式是:

    用户管理服务:

    为用户管理创建一个单独的服务,当需要用户元数据时,identityserver 将其用作用户存储,应用程序将用作用户存储库。

    还有为什么你会做这样的事情:

    用户存储中的示例用户声明:-

    “clientA_role”:“管理员”

    “clientB_role”:“用户”

    为什么不
    只是“角色”:“用户”?并且在您的应用程序中,您将使用 Authorize[Role] 注释保护您的资源。

    不要为不同的应用程序创建不同的字段,将其视为通用的用户管理服务,我很确定标准化您的身份管理会使其更容易,并会获得可维护性和灵活性。

    IdentityServer 服务处理身份管理:

    如果您觉得您的应用程序没有如此深入的用户管理需求,那么将用户存储保留在提供授权的同一服务中可能是一个好主意。

    再次在这种情况下,存储标准声明并在 id_token 或访问 token 中返回您需要的声明。

    更新:

    对于在不同应用程序中具有不同角色的特定用户:

    让我们说我们有以下几点:

    1- User1 在第一个应用程序中具有用户角色,在第二个应用程序中具有管理员角色,然后

    User1.Roles{"FirstAppUser","SecondAppAdmin"}

    2- User2 在两个应用程序中都具有管理员角色,然后:
    User2.Roles{"FirstAppAdmin","SecondAppAdmin"}

    关于asp.net-mvc - 在客户端应用程序中配置用户授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47811892/

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