Я пытался использовать код, указанный здесь:Проблема с вызовом пользовательской функции для аутентификации в 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() тоже. Проблема в том, что все, что я сейчас получаю, это «unauthorized_client».
Это может быть или не соответствовать конфигурации Клиента. Это от настроек клиента в вопросе:
AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,
RedirectUris = { "http://localhost:5002/signin-oidc" },
PostLogoutRedirectUris = { "http://localhost:5002" },
RedirectUris был установлен ранее в рамках одного за быстрые настройку учебников. Я предполагаю, что это должно быть изменено на что-то еще, но не ясно, что это должно быть. Я также не знаю, правильно ли установлен AllowedGrantTypes. Конечно, могут быть и другие вещи, но я все еще новичок в Identityserver.