ajax请求获取令牌的安全性如何(oauth)

时间:2015-02-20 17:16:27

标签: ajax security asp.net-web-api oauth

我正在构建一个通过OAuth身份验证机制使用我的API的SPA应用程序。我的应用程序没有登录视图,因此我通过以相同的方式在代码中写入用户名和密码来获取令牌:

$.ajax({
  type: "POST",
  url:  restServer + "/token",
  dataType: 'json',
  // insecure :
  data: {
     grant_type   : 'password',
     scope        : '*',
     username     : 'someuser',
     password     : 'p4sSw0rd'         
  }
})
//...

但显然这是一种不安全的方法,每个人都可以读取用户名和密码。 我试图在stackoverflow等上找到这个问题,但我不明白如何解决它。

有人说要从服务器获取用户和密码,但它有同样的安全问题。 有人提及https,但在第一步中没有涉及。

有人有想法吗?

1 个答案:

答案 0 :(得分:2)

您不应在JavaScript代码中保留用户名和密码。它们太容易被盗了。

SPA应用程序应该使用OAuth 2.0中的implicit grant。这意味着在登录时,您将客户端重定向到授权服务器以进行身份​​验证。身份验证和授权完成后,授权服务器将客户端重定向回SPA。生成的访问令牌(JWT令牌)可用于在后端调用REST API。

当访问令牌过期时,您与授权服务器通信以获取新令牌。此处可能需要用户交互。