Я следовал инструкциям по Создание собственного сервера OpenID Connect с ASOS .Все работает нормально, но если пользователь введет неправильные учетные данные, он увидит 400 кодов ответа.Я хотел бы изменить этот код состояния на 401. Вот код моей версии функции HandleTokenRequest:
public override Task HandleTokenRequest(HandleTokenRequestContext context)
{
if (context.Request.IsPasswordGrantType())
{
return GrantResourceOwnerCredentials(context);
}
return base.HandleTokenRequest(context);
}
private async Task GrantResourceOwnerCredentials(HandleTokenRequestContext context)
{
var userService = context.HttpContext.RequestServices.GetService<IUserService>();
var user = await userService.AuthenticateAsync(context.Request.Username, context.Request.Password);
if (user != null)
{
var identity = CreatePrincipal(Mapper.Map<UserModel>(user), null);
var ticket = new AuthenticationTicket(identity, new AuthenticationProperties(), context.Scheme.Name);
ticket.SetScopes(Consts.Scopes.Api1, Consts.Scopes.ApiOfflineAccess);
context.Validate(ticket);
return;
}
context.Reject(error: "invalid_grant", description: "The user name or password is incorrect.");
}
Я не вижу, как передать код ответа здесь.Возможен ли такой подход?