gpt4 book ai didi

php - 如何使用移动应用程序和后端服务器通信的用户凭据签署 HTTP 请求?

转载 作者:可可西里 更新时间:2023-11-01 16:43:42 25 4
gpt4 key购买 nike

我们有一个非常标准的场景 - 移动应用程序通过 HTTP POST 和 GET 与后端 PHP 服务器 API 通信。用户必须登录移动应用程序才能执行任何操作,因此从移动应用程序到我们服务器的每个请求都需要使用用户凭据进行签名。登录成功后用户名和密码保存在手机APP内部设置中,用户无需重新输入。

以前后台PHP webservices都是别人开发的,现在需要自己实现。查看以前的项目时,他们需要为每个请求传递用户凭据。我在下面发布了几个请求示例。所有数据插入/更新 web 服务都使用 POST,但 userid 和 pwd 与其他数据(保存汽车)在内部传递。所有数据选择服务都通过 GET 参数传递用户 ID 及其密码。

这是最好且安全的方式吗?也许我们应该将 sha1(userid+password=salt) 放入 HTTP 授权 header 并将 userid 留在正文中(因为我们需要从服务器的数据库中选择用户密码)?或者我们可以在移动应用程序中使用 OAuth 2 来签署 HTTP 请求(生成 userid+pass+... 到授权 header )并在后端使用 OAuth 2 生成相同的哈希值并检查它是否相同?我找不到任何直接的方法来使用 OAuth 2 for PHP 来签署请求,所以任何帮助将不胜感激 :) 此外,关于用于 iOS/Android 开发的库的相关信息也将不胜感激。

登录

HTTP method: POST
URL: http://mybackend.com/login
BODY:

{ "uid" : 123,
"pwd" : "3CB3E2E6AECA48C41000119767B561F5E9E66229" // contains sha1(pass+salt)
}

获取汽车 list

HTTP method: GET
URL: http://mybackend.com/getCars?uid=123&pwd=3CB3E2E6AECA48C41000119767B561F5E9E66229

救车

HTTP method: POST
URL: http://mybackend.com/saveCar
BODY:

{ "uid" : 123,
"pwd" : "3CB3E2E6AECA48C41000119767B561F5E9E66229",
"car" :
{ "id" : 111,
"name": "My car"
}
}

最佳答案

我可能会问用户是否可以在应用程序中更改密码,那么它是否会使用应用程序代码中保存的密码更新该密码?

发布数据的更好方法是创建 access_token 目录并在其中使用用户 ID 和密码。 至于例子:{ “access_token”:{ “uid”:123, “密码”:“3CB3E2E6AECA48C41000119767B561F5E9E66229” , “保存汽车”:{ “编号”:111, "name": "我的车" }

并且在服务器端 php 代码可以通过检查数据库并允许您访问以在数据库中执行 saveCar 来使用此 accesstoken 轻松访问您的所有 url。否则从服务器端您将收到错误消息,因为访问登录失败请重试登录。并在所有请求的 post 方法中使用它。将有利于安全类型。POST 方法是一种用于 PHP 数据安全的方法。不需要其他任何东西。

除了对汽车列表使用 GET HTTP 请求之外,您还可以将访问 token 作为 POST 发送到您的网址

{ “access_token”:{ “uid”:123, “密码”:“3CB3E2E6AECA48C41000119767B561F5E9E66229”, }到您的 Carlist 网址。 http://mybackend.com/getCars ? 从该 post 方法执行代码,因为此 post 方法的结果返回汽车列表。

谢谢,希望这个描述能帮到你。

关于php - 如何使用移动应用程序和后端服务器通信的用户凭据签署 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15808099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com