【问题标题】:Application Specific User Role Configuration - OpenID应用程序特定用户角色配置 - OpenID
【发布时间】:2023-03-14 02:23:01
【问题描述】:

目前,我们有 4 个 .NET 应用程序,它们都具有基于表单的身份验证。所有这些应用程序都有其特定的用户角色。 例如,假设应用程序是 A、B、C 和 D,每个应用程序都有一个用户。 A有用户A1,B有用户B1,C有用户C1,D有用户D1。

A1 在应用程序 A 中具有 ARole1,ARole2 的角色。 B1 在应用程序 B 中具有 BRole1 的作用。 C1 在应用程序 C 中具有 CRole1、CRole2 的作用。 D1 在应用程序 D 中具有 DRole1 的作用。

目前,这些角色映射到特定于应用程序的 sql DB 中的用户。一旦用户登录到应用程序,这些角色就会从 DB 中获取。

现在我们正在将所有这些应用程序移至 SAPCDC 以使用 OpenID 连接进行身份验证,并将成为所有这四个应用程序的通用登录。 SAPCDC 中的身份验证部分我没问题。

但不确定如何管理/迁移用户的这些现有应用程序特定角色。

我们是否需要将这些角色映射为针对用户的 OpenID 范围?

或者我们可以在当前 sql DB 中针对用户保留应用程序特定角色?一旦用户通过 OpenID 进行身份验证,我们就可以从数据库中检查角色?

任何有关这方面的指导都会非常有帮助。

【问题讨论】:

    标签: .net authorization openid-connect


    【解决方案1】:

    在身份验证之后和令牌颁发之前,OIDC 提供者通常会查找特定于域的声明(例如角色),然后将它们作为claims 包含在令牌中。这通常通过 REST 或数据库连接完成。

    OIDC 提供商通常有自己的用户字段,例如:

    • 用户名
    • 电子邮件
    • 生成的主题声明(通常是 GUID)

    在某些情况下,角色可以包含在 OIDC 数据中,但通常将它们分开。一些特定领域的声明(例如customer subscription level)最好存储在 OIDC 数据之外。

    您需要设计一种从 OIDC 数据映射到您的域特定数据的方法。几种常见的技术是:

    • 过滤电子邮件的数据库查询
    • 将主题声明添加到您的数据库数据中

    这是一个Curity article,它讨论了围绕自定义声明的设计模式,这是一个重要的领域,以便您的 API 能够正确授权。

    【讨论】:

      猜你喜欢
      • 2014-02-10
      • 1970-01-01
      • 2018-04-04
      • 2020-04-27
      • 1970-01-01
      • 1970-01-01
      • 2019-03-16
      • 2017-12-30
      • 2014-12-14
      相关资源
      最近更新 更多