使用Python复制Postman Oauth 2.0

c8ib6hqw  于 2022-11-28  发布在  Python
关注(0)|答案(1)|浏览(155)

我有一个有效的授权请求。
如何在Python中复制它?
我正在使用Azure AD验证访问。

qvtsj1bj

qvtsj1bj1#

由于您使用的是python,因此您的案例是:与Microsoft一起使用SSR Web应用程序的Oauth2登录
目标
使用oauth2授权码授权从交互登录获取access_token

步骤

这里我将列出使用任何语言进行此操作所需的所有步骤

  • 创建一个具有至少包含这些终结点的会话的站点
  • /:主页
  • /callback:能够接收/callback?code=123456之类的查询参数的服务器路由或路径。此路由或路径与您的基域沿着称为redirect_uri。示例:或http://acme.com/callback的回调
  • 在Azure开发人员控制台中创建和配置应用。Google、Facebook、Linkedin等中也有相同的过程。因此,你应该有一个clientId、clientSecret和一个重定向URL
  • 创建一个带有经典会话的简单站点,在该会话中,如果用户未登录,则重定向(302)到此URL:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=foo&response_type=code&redirect_uri=foo&response_mode=query&scope=offline_access%20user.read%20mail.read
  • clientid和redirect_uri在这里很重要,应该与上一步相同
  • 之后,浏览器应将用户重定向到平台登录

  • 如果用户输入有效凭据并接受同意警告,Microsoft将执行另一个重定向(302),指向提供的redirect_uri,但具有特殊值:验证码
http://acme.com/callback?code=123456798

1.在/callback的后端获取代码并将其发送到这个新端点
1.添加一个client_id&client_secret参数
1.使用microsoft发送的代码添加code参数
1.添加一个redirect_uri参数,其中包含以前在azure上使用和注册的参数。示例http://acme.com/callbackhttp://localhost:8080/callback
1.添加值为authorization_codegrant_type参数
1.发出内容类型为的HTTP POST请求:application/x-www-form-urlencoded
1.您应该会收到带有宝贵的access_token的响应:

{
  token_type: 'Bearer',
  scope: 'Mail.Read User.Read profile openid email',
  expires_in: 5020,
  ext_expires_in: 5020,
  access_token: 'eyJ0oVlKhZHsvMhRydQ',
  refresh_token: 's_Rcrqf6xMaWcPHJxRFwCQFkL_qUYqBLM71UN6'
}
  • 您可以使用此令牌执行在Azure中配置的任何操作。示例:如果您希望代表用户访问用户日历、配置文件等,您应该在Azure控制台中注册此内容。因此,客户端ID与此内容相关,系统将提示人类用户如下所示

媒介柜

微软提供了一些库(C#,nodejs),这将保存你一点工作。无论如何,前面的解释是非常详细的。

建议

相关问题