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

时间:2017-10-18 10:44:20

标签: asp.net-core identityserver4

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

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

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

1 个答案:

答案 0 :(得分:0)

  

但我的问题是MVC1& MVC2需要更多信息   用户注册。

要检索其他用户信息,您可以依赖用户声明来获取其他用户信息。否则,有一个名为UserInfo Endpoint

的端点
  

但如果我在MVC1&中有一个注册页面MVC2,然后我怎么强迫   用户完成注册?

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

  

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

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

  

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

如果您认为这些用户信息仅用于此客户,那么您可以采用这种方法。

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

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

相关问题