【发布时间】:2019-01-05 17:52:09
【问题描述】:
我一般不太熟悉 HTTP 基本身份验证或 Web 身份验证,因此我希望得到一些帮助来确定我计划的为我的应用提供身份验证的方法有多安全。
我计划制作一个带有 PHP 后端的 Angular 应用程序。我想使用包含登录用户 ID 的数据的 JWT,因此当发出 HTTP 请求时,服务器可以确定该用户是否有权访问特定资源。
我认为,问题在于我的方法必须首先使用 HTTP 基本身份验证,方法是执行 HTTP 请求以登录用户,然后给他们一个 JWT 令牌。
因此,如果我的 Angular 服务中的 verify() 函数如下所示,并且电子邮件和密码只是经过 base64 编码并在 Authorization HTTP 请求标头中发送。
verify(email: string, password: string): Observable<JSON> {
let headers = new HttpHeaders({
"Authorization": "Basic " + btoa(email + ":" + password)
});
return this.http.get<JSON>("http://localhost:80/verify", { headers: headers, withCredentials: true }).pipe(
catchError(this.handleError)
);
}
假设 HTTP 请求是通过 HTTPS 发送的,这有多安全?
如果 HTTPS 不是一个选项并且我无法获得 SSL 证书,是否有任何 Authorization 标头类型可以帮助我的应用程序安全?
【问题讨论】:
-
“是否有任何授权标头类型可以帮助我的应用程序安全?” 不,如果您通过 HTTP 发送用户名和密码,那么您'基本上以明文形式发送它们
-
使用 jwt 时不需要 http 基本身份验证。通常,您会将用户名和密码作为正文的一部分发布到将返回 jwt 的令牌端点。您不应为此使用 http,而应仅使用 https(您可能应该对所有内容都使用 https)
标签: angular security http-headers jwt basic-authentication