【问题标题】:Can anyone tell me the difference between basic authentication and JWT token?谁能告诉我基本身份验证和 JWT 令牌之间的区别?
【发布时间】:2021-02-16 23:08:03
【问题描述】:

所以在我们的项目中,我负责 Angular 8 中的 UI 部分,后端使用 JAVA 开发。两者都将部署在同一个 Windows 服务器中。 目前,我们正在使用基本身份验证来验证用户身份并访问不同的 REST URL。我是新手,所以我对 JWT 令牌不太了解。 那么谁能解释一下使用基本身份验证和 JWT 令牌有什么区别?当后端和前端部署在同一台服务器上时,我们是否需要 JWT 令牌?

当前项目中使用基本身份验证的用户验证示例代码...

LoginAuthorisation(logindata: LoginData) {
    let authrizationdata = logindata.inputEmail+":"+logindata.inputPassword;
    const httpOptions = {
      headers: new HttpHeaders({
        'Content-Type':  'application/json',
        Authorization: 'Basic ' + btoa(authrizationdata),
      }),
      observe: "response" as const,
      withCredentials: true 
    };
    const body = { "message": "Test Data"}
    console.log(httpOptions);
    return this.http.post<any>('http://*****************/home',body,httpOptions);
  }

【问题讨论】:

    标签: java angular oauth-2.0 jwt basic-authentication


    【解决方案1】:

    这是一个非常广泛的问题,但这里是。

    什么是基本身份验证?

    通常我们所说的基本身份验证是 HTTP 的基本身份验证,即:在 HTTP 事务的上下文中,基本访问身份验证是 HTTP 用户代理(例如 Web 浏览器)在以下情况下提供用户名和密码的一种方法提出要求。在基本 HTTP 身份验证中,请求包含 Authorization: Basic 形式的标头字段,其中凭据是 ID 和密码的 Base64 编码,由单个冒号连接(维基百科)

    底线:客户端将其凭据发送到服务器进行验证。

    什么是基于 JWT 的身份验证?

    然而,这不是一个好主意。您通常不想发送您的凭据。相反,您想发送一个代表您与 aerver 交谈的权利/权利的令牌。这就是 JWT 的用武之地。JWT 代表 JSON Web Token。您的身份服务器生成一个验证用户身份的令牌,并将其发送给客户端。客户端将为每个后续请求将令牌发送回服务器,因此服务器知道请求来自特定身份。

    现在有助于理解 JWT 来自 OAuth 2.0 和 OpenID Connect,它们是为避免“密码反模式”(即必须共享您的凭据)而构建的授权/身份验证协议。

    查看 oauth.tools 或 jwt.io 等网站了解更多信息。

    基于 JWT 的身份验证正在成为 API 身份验证的事实标准,而不是用户名密码。

    资源

    【讨论】:

    • 您好,感谢您的意见。我在这里有点困惑,所以当我的用户第一次输入它的信用时。我需要对照 db 检查它,以确保信誉是否正确。在基本身份验证中,我直接将其作为编码值发送,但如何在 JWT 令牌中发送?
    • 看看我添加的其他链接。从本质上讲,您必须查看为您颁发 JWT 令牌的授权服务器,因为它们将有一个 API,您可以点击该 API 来检索 JWT。
    猜你喜欢
    • 2018-06-08
    • 2021-12-10
    • 2011-10-22
    • 2023-02-05
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 2017-10-22
    • 1970-01-01
    相关资源
    最近更新 更多