我正在构建一个通过OAuth身份验证机制使用我的API的SPA应用程序。我的应用程序没有登录视图,因此我通过以相同的方式在代码中写入用户名和密码来获取令牌:
$.ajax({
type: "POST",
url: restServer + "/token",
dataType: 'json',
// insecure :
data: {
grant_type : 'password',
scope : '*',
username : 'someuser',
password : 'p4sSw0rd'
}
})
//...
但显然这是一种不安全的方法,每个人都可以读取用户名和密码。 我试图在stackoverflow等上找到这个问题,但我不明白如何解决它。
有人说要从服务器获取用户和密码,但它有同样的安全问题。 有人提及https,但在第一步中没有涉及。 有人有想法吗?答案 0 :(得分:2)
您不应在JavaScript代码中保留用户名和密码。它们太容易被盗了。
SPA应用程序应该使用OAuth 2.0中的implicit grant。这意味着在登录时,您将客户端重定向到授权服务器以进行身份验证。身份验证和授权完成后,授权服务器将客户端重定向回SPA。生成的访问令牌(JWT令牌)可用于在后端调用REST API。
当访问令牌过期时,您与授权服务器通信以获取新令牌。此处可能需要用户交互。