首页 文章

使用IdentityServer4和多个客户端注册新用户的正确方法是什么?

提问于
浏览
0

我正在构建2个MVC应用程序,并将使用IdentityServer作为单点登录身份验证提供程序 . 通过遵循IdentityServer网站上的示例代码,我可以使身份验证正常工作 . 但现在我对如何在MVC应用程序中注册新用户感到困惑 .

例如,在MVC 1中,我有一个安全的控制器动作 . 现在,访问此操作将重定向到IdentityServer登录页面 . 如果用户选择了外部登录提供程序并成功登录,则用户将被重定向到IdentityServer的“注册”页面,询问用户是否要注册 . 如果用户单击“注册”,则成功重定向到安全操作 . 到目前为止,示例代码已经完成了所有这些 . 但我的问题是MVC1和MVC2需要更多关于用户注册的信息 . 如何提示用户输入这些附加信息?由于MVC 1和2需要不同的信息,因此在IdentityServer注册页面中输入这些信息是不可行的 . 但是如果我在MVC1和MVC2中有一个注册页面,那么我该如何强制用户完成注册呢?用户从IdentityServer进行身份验证后,将直接返回到最初请求的Url . 我只是无法在每个控制器操作中使用代码来验证经过身份验证的用户是否已完成详细注册 .

一种理想的方法是,一旦用户通过IdentityServer进行身份验证,我就可以检查该用户是否已在本地MVC用户数据库中注册 . 如果没有,则将用户重定向到本地MVC注册页面,然后返回到最初请求的Url . 如何做到这一点还是有更合适的方法呢?

1 回答

  • 0

    但我的问题是MVC1和MVC2需要更多关于用户注册的信息 .

    要检索其他用户信息,您可以依赖 user claims 获取其他用户信息 . 否则,有一个名为UserInfo Endpoint的 endpoints

    但是如果我在MVC1和MVC2中有一个注册页面,那么我该如何强制用户完成注册呢?

    基于client_id,您可以更改注册视图

    我只是在每个控制器操作中都没有代码来验证经过身份验证的用户是否已完成详细注册 .

    您可以创建自定义过滤器来验证它 . 但是,我会说尝试在IdS4项目上保留用户相关的详细信息

    我可以检查此用户是否已在本地MVC用户数据库中注册 . 如果没有,则将用户重定向到本地MVC注册页面,然后返回到最初请求的Url . 如何做到这一点还是有更合适的方法呢?

    如果您认为,这些用户信息将 only be used for this client ,那么您可以采取这种方法 .

    但是,如果可能的话,您要求在用户注册页面上提供所有必需的详细信息,对于保留mvc1用户的信息没有任何危害 . 但有时候这是不可能的(例如内部用户和外部用户) . 如果是内部用户,那么我想最好有一个单独的Admin UI,用户可以在其中添加额外信息 .

    无论如何,如果你想把所有东西保存在Id服务器上的一个用户注册页面中,我会在Client表上添加一个额外的标志,它将指示显示额外的文件 . 希望这可以帮到你 .

相关问题