如何在ajax请求中保护凭据以获取令牌(oauth)
我正在构建一个SPA应用程序,它通过OAuth身份验证机制使用我的API。我的应用程序没有登录视图,因此我通过在相同的代码中写入用户名和密码来获取令牌,方法如下:如何在ajax请求中保护凭据以获取令牌(oauth),ajax,security,asp.net-web-api,oauth,Ajax,Security,Asp.net Web Api,Oauth,我正在构建一个SPA应用程序,它通过OAuth身份验证机制使用我的API。我的应用程序没有登录视图,因此我通过在相同的代码中写入用户名和密码来获取令牌,方法如下: $.ajax({ type: "POST", url: restServer + "/token", dataType: 'json', // insecure : data: { grant_type : 'password', scope : '*', user
$.ajax({
type: "POST",
url: restServer + "/token",
dataType: 'json',
// insecure :
data: {
grant_type : 'password',
scope : '*',
username : 'someuser',
password : 'p4sSw0rd'
}
})
//...
但显然这是一种不安全的方式,每个人都可以读取用户名和密码。
我试图在stackoverflow等网站上找到这个问题,但我不知道如何解决它
有人说要从服务器获取用户和密码,但它也有同样的安全问题。
有人提到https,但在这第一步中没有涉及它
有人有想法吗?您不应该在JavaScript代码中保留用户名和密码。它们太容易被偷了 SPA应用程序应该使用OAuth2.0中的。这意味着您在登录时将客户端重定向到授权服务器以进行身份验证。身份验证和授权完成后,授权服务器将客户端重定向回SPA。生成的访问令牌(JWT令牌)可用于在后端调用REST API
当访问令牌过期时,您与授权服务器通信以获取新令牌。这可能需要用户交互。我认为常见的解决方案是散列密码,因为如果不使用TLS连接,密码可能会以纯文本传输。您也可以将此问题移至。但我是如何说我没有登录视图的,那么我如何才能获得用于保护凭据的令牌?显示登录视图的不是您的应用程序,而是授权服务器。它在成功身份验证时返回令牌。但我不希望用户需要在登录视图中登录,我希望它是自动的,并且没有用户交互。你有什么想法吗?那么你应该看看Kerberos身份验证。但这只会在你的领域内起作用。OAuth支持密码授予,但您无法从JavaScript客户端安全地执行此操作。