使用 oAuth2 验证 WPF 和 PHP 之间的请求?
Posted
技术标签:
【中文标题】使用 oAuth2 验证 WPF 和 PHP 之间的请求?【英文标题】:Authenticate requests between WPF and PHP using oAuth2? 【发布时间】:2015-10-28 22:52:10 【问题描述】:我已经搜索了一段时间,但找不到与我的想法相关的任何内容。我想用 WPF 构建一个应用程序,它将所有与用户相关的信息发送到 php 脚本请求。对于每个请求,我都使用 SSL。
当用户注册时,他只提交他的用户名、密码和电子邮件地址。密码始终使用 sha256 作为哈希存储在应用程序中,并且此哈希在 PHP 中使用 password_hash 存储为另一个哈希。
登录后,应用程序会根据用户的操作发送请求。为了验证我遇到的每个请求 oAuth2。 oAuth2 是验证请求的“最佳实践”还是有其他方法?登录后需要验证每个请求。
【问题讨论】:
【参考方案1】:OAuth 可能是您最好的选择。现在在应用程序中工作时,能够验证请求和撤销令牌是关键。许多***网站、Facebook、Twitter、Instagram 等都使用 OAuth,因为它具有强大的身份验证和灵活性。
对于我的公司,我们有自定义构建的 API,并为所有这些 API 使用 OAuth。尽管它们是私有 API,但如果我们愿意,OAuth 让我们能够在以后推送以供公众使用。
不确定您的项目到底是什么或它是如何运作的,坦率地说,我不需要。在我看来,使用 OAuth 不会出错。
【讨论】:
【参考方案2】:保护 API 请求的常用方法有两种:
基本身份验证。表单的标题
Authorization: Basic base64(username:password)
随每个请求一起发送。这实现起来很简单,但攻击起来也很简单;您绝对必须通过 HTTPS 发送请求(因为没有使用加密)。
某种形式的 OAuth。您可以将密码授予类型用于类似您的场景:您将用户名和密码发送到 OAuth 服务器并请求可用于每个请求的 访问令牌。这更安全,也更复杂,因为您必须实现令牌服务器。
您的选择取决于很多因素,例如您的服务是内部的还是外部的、您希望在项目中构建多少复杂性以及目标用户是谁。
延伸阅读:
API Keys vs HTTP Authentication vs OAuth in a RESTful API HTTP Authentication What the Heck is OAuth? How to Secure an API(与 WPF 无关,但视频不错)完全披露:我在 company 工作,为此构建了一个 API。
【讨论】:
这是一个学习过程,我想学习最佳实践。因为基本身份验证太简单而且不那么安全,所以我会尝试 OAuth。现在我会做很多研究,看看我能不能进入这个。 如果您以前从未做过任何身份验证层的工作,那么在双方都实施 Basic 将是一个很好的练习。然后你就可以继续学习更高级的东西了。 感谢您的建议。我将首先实现 Basic,看看它是如何工作的。以上是关于使用 oAuth2 验证 WPF 和 PHP 之间的请求?的主要内容,如果未能解决你的问题,请参考以下文章
OAuth2:JWT授权授予和客户端凭据授权与JWT客户端身份验证之间的区别是什么?
PHP下的Oauth2.0尝试 - OpenID Connect