该问题出现的原因是Ids4会在登录成功后重定向到客户端的回调地址,但由于回调地址可能会被改写,因此重定向到了一个未被授权的地址。要解决这个问题,需要在Ids4的配置中设置重定向地址的白名单,使其只能重定向到被授权的地址。以下是示例代码:
// Startup.cs 文件中的 Ids4 配置部分
services.AddIdentityServer()
.AddInMemoryIdentityResources(Config.IdentityResources)
.AddInMemoryApiResources(Config.ApiResources)
.AddInMemoryClients(Config.Clients)
.AddTestUsers(Config.Users)
.AddDeveloperSigningCredential()
.AddRedirectUriValidator
public class MyRedirectUriValidator : IRedirectUriValidator
{
public Task
var result = validUris.Contains(requestedUri);
return Task.FromResult(result);
}
}
在上面的示例代码中,我们自定义了一个重定向地址验证器 MyRedirectUriValidator,并应用到了Ids4配置中。重定向地址的合法性是根据客户端回调地址的白名单来验证的。如果请求的地址存在于白名单中,重定向就会被允许;否则就会被拒绝,避免了未被授权的重定向。