使用刷新令牌的Web应用程序身份验证将重定向回谷歌登录页面

时间:2017-08-10 05:34:00

标签: python authentication web-applications oauth-2.0 google-oauth

我们使用google oauth在Apache中使用OpenId Connect进行jenkins身份验证设置(参考:https://cloudavail.com/2014/06/07/apache-auth-oidc-google-apps-2/)。

为了自动化一些jenkins工作,我们必须先进行身份验证。

我在python脚本中使用client-secrets.json获取了访问令牌和刷新令牌,在此过程中已经完成了对google邮件的身份验证。

我使用以下脚本使用刷新令牌自动刷新令牌,然后使用新令牌列出Jenkins中的所有作业或项目。

为什么在获取访问令牌时,在授权步骤中我已经使用gmail授权时,它会将我重定向到谷歌登录。如果有人能帮我解决这个问题,那将是一个很大的帮助。

以下是脚本(token.json和extra.json包含令牌和客户端详细信息)

#!/usr/bin/env python
import requests_oauthlib, json
from requests_oauthlib import OAuth2Session, TokenUpdated

protected_url='<jenkins_url>/api/json?pretty=true'
refresh_url='https://accounts.google.com/o/oauth2/token'

#Start here
TOKEN_FILE='token.json'
EXTRA_FILE='extra.json'

with open(TOKEN_FILE, 'r') as f:
   token = json.load(f)

with open(EXTRA_FILE, 'r') as f:
   extra = json.load(f)


client_id=extra['client_id']


def token_saver(token_temp):
   token = token_temp


from requests_oauthlib import OAuth2Session
client = OAuth2Session(client_id, token=token, auto_refresh_url=refresh_url,auto_refresh_kwargs=extra, token_updater=token_saver)
token=client.refresh_token(refresh_url, **extra)
token_saver(token)
client = OAuth2Session(client_id, token=token)
r = client.get(protected_url)
print r.content
  

token.json内容

   {
     "access_token": "{access_token}",
     "refresh_token": "{Refresh_token}",
     "id_token": "{id_token}",
     "token_type": "Bearer",
     "expires_in": "5"
    }
  

extra.json内容

 {
 "client_id":"{client_id}",
  "client_secret":"{client_secret}"
}

0 个答案:

没有答案