我正在开发一个Web服务,我需要在GET方法中向服务发送用户名和密码.是否可以在uri中发送此信息,只要它通过像ssl这样的安全通道?换句话说,我可以使用/ users/{username}/{cleartext_password}吗?
编辑:对不起,我想我不清楚.Web服务本质上只是一个用户名和散列密码的数据库.想象一个桌面应用程序,它将用户名和密码保存在远程数据库中.最终用户在应用程序中键入其用户名和密码,应用程序访问Web服务以对用户进行身份验证.
因此,应用程序需要向服务发送最终用户的用户名和明文密码.该服务将使用用户名和密码,并检查用户名和密码的哈希值是否与数据库中的用户名和哈希密码相匹配.应用程序本身必须在可以访问服务之前进行身份验证,但我只是想知道将最终用户的用户名和密码发送到服务以验证最终用户的最佳方法是什么.我不使用POST方法,因为我只是进行身份验证,因此不会更改服务器的状态.对困惑感到抱歉.
我注意到某些API让您将API密钥作为url参数传递,而其他API则将其传递给HTTP HEADER.我正在开发一个基于Web的应用程序,它将严重依赖REST API,而现在我只是拥有它,因此API KEY作为url参数传递.
我的问题是这些选项中的一个是否比另一个更安全?
我有一个 node.js 服务器,它使用 google-passport-oauth2 进行身份验证。我的服务器端代码看起来像文档中的那样:
app.get('/auth/google',
passport.authenticate('google', { scope:
[ 'https://www.googleapis.com/auth/plus.login',
, 'https://www.googleapis.com/auth/plus.profile.emails.read' ] }
));
app.get( '/auth/google/callback',
passport.authenticate( 'google', {
successRedirect: '/auth/google/success',
failureRedirect: '/auth/google/failure'
}));
Run Code Online (Sandbox Code Playgroud)
我认为这会/auth/google重定向到 google 的登录名,并且在收到权限时,会将 google 个人资料和令牌发送到 callback /auth/google/callback。
现在我正在制作一个想要使用此 API 进行身份验证的 android 应用程序。我正在使用集成 Google Sign-In的说明在 google 端进行身份验证。现在我的 android 应用程序有配置文件和令牌,并想用我的服务器验证它。
我试过用passport-google-token和passport-google-id-token(不确定区别......)来做这件事,但无论出于何种原因它都不起作用。现在我正在寻找其他可能性,例如 node.js 的 Google 客户端 API 库,但它看起来很笨重。然后是 tokeninfo 端点,它涉及额外的请求和更多的延迟。或者我应该看看express-jwt?
突然间,我想知道......我不能将令牌从我的 android 应用程序传递到服务器auth/google/callback吗?那会让事情变得简单一些。我认为这一定是一个白日梦,因为我还没有找到任何关于这样做的信息。但是如果可能的话,我应该如何格式化请求中的令牌/配置文件数据,以便passport.authenticate()方法识别它?(JSON,表单数据,标题)
如果无法做到这一点,我正在为节点提供有据可查的令牌验证库的建议......
我正在为我的应用程序构建一个RESTful API,我希望尽可能保持干净透明.
我需要创建一个身份验证端点,我最有意义的是构建它,以便用户可以通过以下方式进行身份验证:
GET https://example.com/
auth?identity=<username_or_email>&password=<password>
Run Code Online (Sandbox Code Playgroud)
正如我所说,在查询参数中使用HTTP GET方法传递用户auth数据对我来说似乎很干净.
但我想问你实际上有多安全.考虑到它将通过SSL/TLS加密,您认为传输这样的用户凭据是个好主意吗?
我正在使用 AWS Cognito 的托管 UI 进行用户登录。id 令牌作为 URL 的一部分返回,如https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-app-integration.html中所述。即,
您可以在响应中的 #idtoken= 参数后面找到 JSON Web 令牌 (JWT) 身份令牌。以下是隐式授予请求的示例响应。https://www.example.com/#id_token=123456789tokens123456789&expires_in=3600&token_type=承载
但是,将敏感数据放入查询字符串中被认为是一种不好的做法(HTTPS 查询字符串安全吗?)。AWS Cognito 是否支持更安全的返回 id 令牌的方式?
目前,我们计划使用GET方法向服务器发送短消息和敏感消息.我们将在GET请求字符串中附加信息.
我们将使用https.
我想知道,我们是否需要对数据执行AES加密(在接收服务器端不需要解密.因此,在我们将其附加到GET请求字符串之前,不要求通过服务器传输加密密钥)?
如果正在使用https,攻击者是否能够嗅探GET请求字符串?
我有一个简单的GET登录请求.用户名是Silver,密码是 MOto&@ 10
我正在使用SwiftHttp框架来处理请求.在点击登录请求时,我总是得到错误的响应.
但是,当在浏览器上点击登录请求URL(用服务器替换实际域)时,我得到了:
https:// server/api/check-access/by-login-pass?_key = wlyOF7TM8Y3tn19KUdlq&login = silver&pass = MOto%26 @ 10
编码和密码有问题.虽然我用百分比编码取而代之.这是我的代码:
do {
let passwordString = self.convertSpecialCharacters(string: password.text!)
print("%@", passwordString)
let opt = try HTTP.GET(Constants.kLoginUrl, parameters: ["login": username.text!, "pass": passwordString])
opt.start { response in
if let err = response.error {
print("error: \(err.localizedDescription)")
return
}
print("opt finished: \(response.description)")
self.parseLoginResponse(response.data)
}
} catch _ as NSError {
}
Run Code Online (Sandbox Code Playgroud)
这是convertSpecialCharacters:
func convertSpecialCharacters(string: String) -> String {
var newString …Run Code Online (Sandbox Code Playgroud)