Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在引入IdentityServer4之后,如何处理现有应用程序中的现有用户表_Identityserver4 - Fatal编程技术网

在引入IdentityServer4之后,如何处理现有应用程序中的现有用户表

在引入IdentityServer4之后,如何处理现有应用程序中的现有用户表,identityserver4,Identityserver4,我们有几个现有的应用程序,每个应用程序都有自己的数据库(和自己的用户表,因为不同的应用程序有不同的客户)。每个应用程序都有自己的登录/更改密码/重置密码/忘记密码等功能。现在,我们希望使用IdentityServer4构建一个中央身份验证/授权服务器,现有应用程序和未来的新应用程序都可以使用该服务器,并且不再需要为每个应用程序执行登录/更改密码/重置密码/忘记密码等功能一次又一次的申请 所以我的问题是,我们应该如何处理这些现有的用户表?我可以看到两种选择: 保留现有用户表 当客户尝试登录到应用程

我们有几个现有的应用程序,每个应用程序都有自己的数据库(和自己的用户表,因为不同的应用程序有不同的客户)。每个应用程序都有自己的登录/更改密码/重置密码/忘记密码等功能。现在,我们希望使用IdentityServer4构建一个中央身份验证/授权服务器,现有应用程序和未来的新应用程序都可以使用该服务器,并且不再需要为每个应用程序执行登录/更改密码/重置密码/忘记密码等功能一次又一次的申请

所以我的问题是,我们应该如何处理这些现有的用户表?我可以看到两种选择:

  • 保留现有用户表 当客户尝试登录到应用程序时,他将被重定向到identity server,它将查找现有的用户表。当不同应用程序的不同客户出现时,它将查找不同的现有用户表

  • 将所有现有用户表合并到identity server中新数据库中的单个用户表,并删除所有现有用户表。 但在这些应用程序中,在用户登录之后,程序可能仍然需要访问这些用户表。如果合并到identity server中的新表,如何解决此问题?我们不能直接访问identity server中的用户表,对吗


  • 我觉得选择2是正确的选择,但不知道确切的原因和方式。谁能给我解释一下吗?谢谢。

    以下是我的建议:

  • 创建新用户表
  • 创建新用户到旧应用程序用户表
  • 填充新的用户表
  • 创建新用户表

    使用单个应用程序用户表中的所有公共字段创建一个新的用户表。类似于这个例子

    CREATE TABLE [USERS](
        [ID]  [bigint] IDENTITY(1,1)  NOT NULL
        [FIRST_NAME] [char](15) NOT NULL,
        [LAST_NAME] [char](30) NOT NULL,    
        [PASSWORD] [char](15) NOT NULL,
        [PHONE] [char](12) NOT NULL,
        [PHONE_EXT] [char](4) NOT NULL,
        [EMAIL] [char](50) NOT NULL,
        [STATUS] [char](1) NOT NULL,    
        [UPD_TSTAMP] [datetime] NOT NULL,
        [UPD_USER] [char](8) NOT NULL
    )
    
    如果您的应用程序具有其他并非所有应用程序都通用的字段,则可以编写代码在相应的应用程序中查找这些详细信息。您不希望将其包括在公共表中

    创建新用户到旧应用程序用户表

    此表将允许您在应用程序中继续使用可能与旧用户ID绑定的任何特殊逻辑

    这将允许您做的第二件事是在迁移过程中跟踪新用户Id到旧用户Id的映射

    警告-您应该确保现有用户ID的类型相同。本例假设它们都是
    bigint
    类型

    UserID
    是第一个表中的
    Users.ID
    列的外键

    CREATE TABLE [USER_APPS](
        UserID [bigint] NOT NULL,
        AppName  [char](30) NOT NULL,
        AppUserID [bigint] NOT NULL
    )
    
    填充新用户表

    当用户尝试登录时,首先搜索新表。如果没有记录,则搜索每个应用程序的用户表以查看是否找到匹配项。如果没有匹配项,则提示用户遵循您的注册过程。如果找到匹配项,请在
    USERS
    USER\u APPS
    表中创建新记录。向用户显示辅助屏幕,并询问用户是否使用具有不同用户id和密码组合的其他应用程序。如果他们确实有其他帐户,请尝试对其进行身份验证。如果成功,则在
    USER\u APPS
    表中输入相应的记录。您将继续此流程,直到用户没有更多的应用程序可登录。完成后,要求他们更新密码。 作为更新密码逻辑的一部分,您可能希望更新在
    USER\u APPS
    表中映射的所有应用程序密码


    关于如何让IdentityServer 4使用现有数据库对用户进行身份验证,请按照我的说明进行操作。

    以下是我的建议:

  • 创建新用户表
  • 创建新用户到旧应用程序用户表
  • 填充新的用户表
  • 创建新用户表

    使用单个应用程序用户表中的所有公共字段创建一个新的用户表。类似于这个例子

    CREATE TABLE [USERS](
        [ID]  [bigint] IDENTITY(1,1)  NOT NULL
        [FIRST_NAME] [char](15) NOT NULL,
        [LAST_NAME] [char](30) NOT NULL,    
        [PASSWORD] [char](15) NOT NULL,
        [PHONE] [char](12) NOT NULL,
        [PHONE_EXT] [char](4) NOT NULL,
        [EMAIL] [char](50) NOT NULL,
        [STATUS] [char](1) NOT NULL,    
        [UPD_TSTAMP] [datetime] NOT NULL,
        [UPD_USER] [char](8) NOT NULL
    )
    
    如果您的应用程序具有其他并非所有应用程序都通用的字段,则可以编写代码在相应的应用程序中查找这些详细信息。您不希望将其包括在公共表中

    创建新用户到旧应用程序用户表

    此表将允许您在应用程序中继续使用可能与旧用户ID绑定的任何特殊逻辑

    这将允许您做的第二件事是在迁移过程中跟踪新用户Id到旧用户Id的映射

    警告-您应该确保现有用户ID的类型相同。本例假设它们都是
    bigint
    类型

    UserID
    是第一个表中的
    Users.ID
    列的外键

    CREATE TABLE [USER_APPS](
        UserID [bigint] NOT NULL,
        AppName  [char](30) NOT NULL,
        AppUserID [bigint] NOT NULL
    )
    
    填充新用户表

    当用户尝试登录时,首先搜索新表。如果没有记录,则搜索每个应用程序的用户表以查看是否找到匹配项。如果没有匹配项,则提示用户遵循您的注册过程。如果找到匹配项,请在
    USERS
    USER\u APPS
    表中创建新记录。向用户显示辅助屏幕,并询问用户是否使用具有不同用户id和密码组合的其他应用程序。如果他们确实有其他帐户,请尝试对其进行身份验证。如果成功,则在
    USER\u APPS
    表中输入相应的记录。您将继续此流程,直到用户没有更多的应用程序可登录。完成后,要求他们更新密码。 作为更新密码逻辑的一部分,您可能希望更新在
    USER\u APPS
    表中映射的所有应用程序密码

    请按照我的说明进行操作,了解如何让IdentityServer 4使用现有数据库进行身份验证