繁体   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