我一直在嘗試使用這裏提到的代碼:問題與調用自定義函數進行身份驗證在Identityserver 4
https://stackoverflow.com/a/35882775/7440281
...作爲解決我自己的問題的一種方式。基本上我想要做的 - 最初是 - 調用某種功能並提供一個用戶名和密碼。驗證將在外部完成,但已添加到ResourceOwnerPasswordValidator的實例中。請注意,界面似乎在寫入時間和當前時間之間發生了變化。我所做的第一步就是檢查一個特定的名字,以便儘量簡單地開始。這是我的班級的當前內容:
public class ResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator
{
public Task ValidateAsync(ResourceOwnerPasswordValidationContext context)
{
if (context.UserName == "PatrickS")
{
var result = new GrantValidationResult("PatrickS", "password");
}
else
{
var result = new GrantValidationResult(TokenRequestErrors.UnauthorizedClient, "Username Or Password Incorrect");
}
return Task.FromResult(result);
}
}
我有評論中定義的評論中提到的兩個接口。我在ConfigureServices中也使用了services.AddTransient()來引用它們。問題是我目前得到的是'unauthorised_client'。
這可能是也可能不是客戶端的配置。這是來自有問題的客戶端的設置:
AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,
RedirectUris = { "http://localhost:5002/signin-oidc" },
PostLogoutRedirectUris = { "http://localhost:5002" },
RedirectUris之前被設置爲快速入門教程的一部分。我猜這應該改成別的東西,但不清楚這應該是什麼。我也不清楚AllowedGrantTypes是否被正確設置。當然可能還有其他的東西,但我對Identityserver還是個新手。