如何实现IClientSecretValidator

时间:2020-09-04 16:37:21

标签: identityserver4

我想在我的IdentityServer4主机中实现自定义客户端机密验证器。我的问题是,如何在我的startup.cs文件中向身份服务器构建器注册它? 有一种方法可以注册常规的秘密验证器,但找不到用于添加ClientSecretValidator的方法。

1 个答案:

答案 0 :(得分:1)

IdentityServer4上下文中的“秘密验证器”是指客户端机密(see the description of the 'AddSecretValidator' extension method under 'Additional Services')的验证器。除非您想实现用于在请求中查找机密,获取客户端并在同一类中验证机密的代码,否则这可能就是您要寻找的。

The implementation of IClientSecretValidator仅协调ISecretParser(the default implementation of this interface will find the client secret on the incoming request),IClientStore(the chosen implementation of this interface will retrieve the configured client so the actual secret can be retrieved)和ISecretValidator(the default implementation of this interface will validate the secret in the request against the 'parsedSecret' retrieved from the client)的用法。

要回答您的第一个问题,尽管可以替换现有的ClientSecretValidator,但您不能在其生成器中添加自己的ClientSecretValidator。为此,您必须拨打类似于services.Replace(ServiceDescriptor.Transient<IClientSecretValidator, CustomClientSecretValidator>());

的电话

有关替换已在ASP.NET Core依赖注入系统中注册的服务的更多信息,请参见here