获取 400 的状态 - "error":"invalid_grant" On Authentication

Posted

技术标签:

【中文标题】获取 400 的状态 - "error":"invalid_grant" On Authentication【英文标题】:Getting status of 400 - "error":"invalid_grant" On Authentication获取 400 的状态 - "error":"invalid_grant" On Authentication 【发布时间】:2021-12-04 19:19:12 【问题描述】:

我创建了自己的网站 (www.luig.us)。我为 SQL 服务器创建了一个基本的 IDE,只教孩子 SQL,DML。

它要求用户在开始时输入用户名和密码以获得使用服务的令牌。

在本地,一切正常,但是当我把它放在我的网站上,由 go-daddy 托管时,我每次都会收到相同的消息,我不知道为什么。

"error":"invalid_grant"

这是我的 java 脚本代码 - 查找 Authorize。任何帮助表示赞赏。 我密切关注这篇文章https://www.c-sharpcorner.com/UploadFile/736ca4/token-based-authentication-in-web-api-2/



function Authorize() 
    let bearer = "Basic Q01JUzMwOERTMzA4OndlYkFQSQ=="
    var email = document.getElementById("email").value;
    var password = document.getElementById("password").value;
    var userNameAndPasswordFilled = (email != "" && password != "");
    if (!userNameAndPasswordFilled) 
        $("#formError").show('fast');
    
    else 
        var bodyOfRequest = 
            grant_type: "password",
            username: email,
            password: password
        ;
        $.ajax(
            type: "POST",
            url: uriManager.access,
            beforeSend: function (request) 
                request.setRequestHeader("Authorization", bearer);
            ,
            data: bodyOfRequest,
            success: function (response) 
                sessionStorage.setItem(programKeyWords.BearerToken, response.access_token);
                $('#LogonModal').modal('hide');
            ,
            error: function (response) 
                $("#formError").show('fast');
            
        );
    



【问题讨论】:

如果 base64 编码字符串包含您用于基本身份验证的实际凭据,那么您应该立即更改它们。将它们进行 base64 编码并不比将它们以明文形式进行更安全。如果您在问题中使用了虚假凭据,那么请不要介意。现在回答你的问题。您使用的是哪个 OAuth 提供程序或授权服务器?你自己实现了吗? 关于不记名令牌,我真的不知道如何处理这部分过程。任何指导表示赞赏。我按照这些步骤c-sharpcorner.com/UploadFile/736ca4/… 是的,我自己实现了。 您是否在您的 Program 类中更新了 baseAddress 的值? step 6@FrancoPettigrosso 您没有提供服务器代码。顺便说一句,你不需要那个“承载者”。您的网站是公开的,并且像这样硬编码的“秘密”并没有做任何有用的事情。 是的,我也用邮递员试过了 【参考方案1】:

问题不在于代码。问题在于:

    连接字符串。这是不正确的。 我正在加密用户名和密码,但由于特殊字符而无法正确匹配

我做了什么来修复它。

    修复了连接字符串 修复了存储哈希而不是字符串的算法。

【讨论】:

【参考方案2】:

如果没有更多信息,我不能说太多,但我首先要检查的是您的数据库中是否确实有用户(或您正在使用的任何 oauth)。如果您的 oauth 数据库中实际上没有具有该用户名和密码的用户,则可能会导致您遇到的错误。

您用于uriManager.access 的端点是您必须检查该用户是否实际存在的地方。

【讨论】:

以上是关于获取 400 的状态 - "error":"invalid_grant" On Authentication的主要内容,如果未能解决你的问题,请参考以下文章

错误:响应不成功:收到状态码 400" Graphql

shell脚本如何获取状态码返回值,如ok或error

验证测试用户 "error_type": "OAuthException", "code": 400, "error_messa

jQuery:如何从 $.ajax.error 方法中获取 HTTP 状态代码?

Instagram oauth api 给出 "code": 400, "error_type": "OAuthException", &

Instagram oauth api 给出 "error_message": "匹配代码未找到或已被使用。", "code": 400,