[英]Register IIdentityServerInteractionService in Identity Server 4 for OpenID Connect
[英]Returning 401 response in OpenID Connect server with ASOS
我遵循了使用 ASOS 創建自己的 OpenID Connect 服務器的教程。 一切正常,但如果用戶輸入錯誤的憑據,他將看到 400 響應狀態代碼。 我想將此狀態代碼更改為 401。這是我的 HandleTokenRequest function 版本的代碼:
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.");
}
我看不到如何在這里傳遞響應代碼。 這種方法有可能嗎?
讓我的評論成為答案。 根據我的經驗,400 狀態碼是非常典型的。
它也在規范中: https://openid.net/specs/openid-connect-core-1_0.html#TokenErrorResponse
如果令牌請求無效或未經授權,則授權服務器構造錯誤響應。 令牌錯誤響應的參數在 OAuth 2.0 [RFC6749] 的第 5.2 節中定義。 HTTP 響應正文使用 application/json 媒體類型,HTTP 響應代碼為 400。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.