ICustomAuthorizeRequestValidator没有被调用?

18

我正在尝试使用 AddCustomAuthorizeRequestValidator 方法来提供自定义声明验证。 我甚至无法在 ICustomAuthorizeRequestValidator 实现中打上断点。 我错过了什么吗?我的断点

ConfigureServices 方法代码:

services.AddMvc();

services.AddOptions();

services.AddTransient<ICustomAuthorizeRequestValidator, Saml2BearerValidator>();

services.AddIdentityServer()
    .AddTestUsers(Config.GetUsers())
    .AddConfigurationStore(builder =>
        builder.UseSqlServer(_settings.Value.ConnectionString, options =>
                options.MigrationsAssembly(migrationsAssembly)))
    .AddOperationalStore(builder =>
        builder.UseSqlServer(_settings.Value.ConnectionString, options =>
                options.MigrationsAssembly(migrationsAssembly)))
    .AddCustomAuthorizeRequestValidator<Saml2BearerValidator>()
    .AddSigningCredential(CertificateManager.GetFromStorage(
                _settings.Value.ServerCertificateThumb, _settings.Value.ServerCertificatePass));

    return services.ConfigureAutofacServicesProvider(_settings.Value.Abc_xacml_n3_diagnostic);
3个回答

1
根据IdentityServer的结构方式,如果您添加的调用在哪里可能会导致这种情况发生,这是可能的吗?
如果IdentityServer直接从您添加的内容构建中间件管道,则有可能在到达管道中的该点之前处理它。
想知道您是否成功解决了这个问题。

1

我曾经遇到同样的问题。我创建了自定义授权。

创建一个名为CustomValidationGrant的类,实现:IExtensionGrantValidator where TUser : IdentityUser, new(),其中有一个参数GrantType,对于这个实例,我可以称之为“custom”

在startUp.cs中添加 services.AddIdentityServer() .AddExtensionGrantValidator<CustomValidationGrant >()

不要忘记为您的客户端允许grantType。

在控制台应用程序中,您可以使用以下代码:

var discoveryClient = new DiscoveryClient("http://localhost:5000");
discoveryClient.Policy.RequireHttps = false;

var doc = await discoveryClient.GetAsync();

var parameters = new Dictionary<string, string>();

parameters.Add("scope", "MyScope");

parameters.Add("client_secret", "SomeSecret");

parameters.Add("UserName", "UserName");

parameters.Add("Password", "Password");


var tokenResponse = await client.RequestTokenAsync(new TokenRequest
{
       Address = tokenEndpoint,
       ClientId = "your client",
       GrantType = "custom",
       Parameters = parameters
});

1
在您的startup.cs中使用以下代码。
services.RemoveAll<IdentityServer4.Validation.ICustomAuthorizeRequestValidator>();
        services.AddTransient<IdentityServer4.Validation.ICustomAuthorizeRequestValidator, UserManagementApiCustomAuthorizeRequestValidator>();

对我有用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接