簡體   English   中英

在帶有 ASOS 的 OpenID Connect 服務器中返回 401 響應

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM