Oauth
什么是Oauth?
一个开放协议,可以从Web,移动和桌面应用程序的简单和标准方法中进行安全授权 - 来自文档
- 最初设置Oauth的主要原因是允许应用程序访问用户的数据而无需将其提供给用户的密码。例子:还记得所有这些第三方应用程序都会要求您发送电子邮件 +密码以访问您的gmail联系人等吗?明显的违反安全性,因为应用程序可以坚持并能够更改密码。一些应用程序将将用户的密码存储在原告文本中(明显的安全风险)。用户可以撤销访问的唯一方法是更改密码
- OAuth的主要区别功能是,将用户在第三方应用程序中输入密码,而是将用户重定向到OAuth Server(我猜是主要的应用程序),以输入其密码,然后重定向回到寻求访问的第三方应用程序。
- OAuth最初用例后的其他用例是在自己的API上构建第一方应用程序的组织。例子:登录任何Google服务(YouTube,Gmail等)时,您不会直接登录该服务。您将您重定向到Google的OAuth Server(coundures.google.com),然后在身份验证后登录并重定向到Google服务。
- 好处是出于安全原因集中密码管理。
- 集中化的另一个好处是,它可以轻松升级所有用户/服务的身份验证
Oauth 2
- 在某些用例中,例如在移动应用程序中,无法安全地使用OAuth的初始实现。
- OAuth 2的目标是在OAuth 1上建造用于移动应用程序,并简化与API消费者混淆的方面。
- OAuth 2的问题是,该协议的网络和企业贡献者之间存在冲突。许多争论领域都放在不同的文档中,在协议中留下了很多差距(因此,核心文档中称为框架)。
- 结果是OAuth 2的Web实现可能很复杂且令人困惑,因为您需要合成不同草稿的信息
- 实施问题:
- 标准不需要令牌类型
- 不需要特定的赠款类型
- 不提供有关令牌字符串大小的指导
创建OAuth 2应用程序
- 在服务网站上创建一个开发人员帐户,并输入有关应用程序(名称,网站,徽标等)的基本信息
- 您将获得一个
client_id和client_secret (有时),您的应用将使用该应用程序与服务进行交互。 - 注册一个或多个重定向URL(OAuth 2服务将在用户授权后将返回应用程序)以避免创建可以窃取用户数据的恶意应用程序的关键。
- 重定向URL必须是HTTPS端点,以从拦截授权代码和劫持会话中提供攻击者
- OAuth 2没有为不同的应用程序状态注册多个重定向URL,而是提供了一个“状态”参数,可用于编码应用程序状态。
- 该参数是一个字符串,将在用户被授权将其带到应用程序中的正确位置后返回。状态字符串应使用JWT之类的方法进行加密。
- 在用户授权并将其重定向到客户端应用程序后,生成的状态最初存储在会话中,OAuth服务器将状态字符串与最初存储的状态进行比较,然后在交换授权代码以供访问令牌
我学到的其他概念
卷曲
- 代表客户端URL是开发人员将数据传输到服务器的命令行工具。让您通过指定要发送的URL(位置)和数据来与服务器进行通信。
- 支持不同的协议(HTTP,HTTP)并在几乎每个平台上运行,非常适合在任何设备上测试通信
- 好处:
- 与几乎OS和设备相当的便携式和可比
- 对于测试端点有用
- 可以是冗长的,因此有助于调试
- 良好的错误记录
在网络上运行python脚本,而没有诸如烧瓶或django之类的框架
- 您首先需要将Python脚本设置为CGI脚本
- CGI代表公共网关接口。它允许应用程序与Internet上的其他应用程序进行通信
- 首先创建一个CIG-bin文件夹,然后在此处移动Python脚本
- 然后使用Python的内置
http.server运行简单的HTTP服务器 - 运行
python -m http.server --cgi来自包含CGI -bin的目录以在CGI模式下启动HTTP服务器。 - 导航到
http://localhost:8000/cgi-bin/your-script.py运行CGI脚本。 - 在
your-script.py中需要包含print("Content-type:text/htmlrnrn")以将响应的内容类型设置为“ text/html”,以使脚本像html文件一样在浏览器中运行
Shebang(Hashbang)
-
#!在类似于Unix的操作系统中可执行文件的开始。 - 指定解释器可执行文件的路径,该路径应用于运行脚本。
- 例如,像
#!/usr/bin/env python一样的Shebang在Python脚本开始时告诉系统,该系统使用位于usr/bin/env python上的Python解释器来运行脚本。
资源
- OAuth文档
- 什么是Oauth,为什么重要? - YouTube上的Oktadev
- OAuth 2服务器
- IBM:什么是卷发?