IdentityServer客户端重定向URL中是否允许使用通配符

Ian*_*Ian 5 client identityserver4

我正在准备自己的测试IdentityServer,但遇到了麻烦。必须为每个基于浏览器的客户端指定ClientUri和RedirectUris。我知道这些可以存储在数据库中,但是有什么方法可以在这里插入通配符?

我们每个客户都有自己的子域,我想通过允许所有尝试访问* .ourcompany.com上我们任何应用程序的浏览器都被视为身份服务器中的同一客户端来简化用户管理。这可能吗。

raw*_*wel 7

您可以实现自己的重定向 URI 验证器。但出于安全原因,不建议这样做,因为它会扩大攻击面。

  1. 重定向 Uri 验证器接口
  2. 如何注册您的自定义验证器
  3. 关于重定向uri的讨论


身份服务器4

我认为您可以添加AddCustomAuthorizeRequestValidator启动。不过,不建议修改重定向 URI 验证。

  1. 添加自定义服务
  2. 相关讨论

  • 我认为它的完整功能集会加重它的负担。我的应用程序都在他们的机器上安装了相同的 x509 证书集,因此我可以在任何地方验证和解密令牌。这意味着我可以进行更简单的基于所有权的身份验证,而不必让我的 STS 定义所有这些范围、客户端和资源。在我的情况下尝试设置 IDServ4 只是让我头疼,因为我知道我所做的大部分配置都是不必要的。即时注销功能和请求过滤是唯一需要 STS 了解消费者应用程序的内容。 (3认同)

huy*_*itw 6

对于 IdentityServer4,您可以自己实现IRedirectUriValidator并使用Startup.cs 中AddRedirectUriValidator扩展方法注册它。

services.AddIdentityServer(options =>
    {
        // ...
    })
    .AddRedirectUriValidator<CustomRedirectUriValidator>();
Run Code Online (Sandbox Code Playgroud)

默认情况下,StrictRedirectUriValidator已注册,但可以通过调用覆盖,.AddRedirectUriValidator如上所示。