atlassian服务到服务身份验证规范的python实现。
atlassian-jwt-auth的Python项目详细描述
这个包提供了Service to Service Authentication规范的实现。
安装
要安装,只需运行
$ pip install atlassian-jwt-auth
使用此库
为认证创建jwt
importatlassian_jwt_authsigner=atlassian_jwt_auth.create_signer('issuer','issuer/key',private_key_pem)a_jwt=signer.generate_jwt('audience')
在传统位置使用磁盘上的文件创建jwt
每次调用generate_jwt时,都会找到最新的活动密钥文件(以.pem结尾),并使用它生成jwt。
importatlassian_jwt_authsigner=atlassian_jwt_auth.create_signer_from_file_private_key_repository('issuer','/opt/jwtprivatekeys')a_jwt=signer.generate_jwt('audience')
发出经过身份验证的http请求
如果使用atlassian_jwt_auth.contrib.requests.JWTAuth提供程序,则 当使用requests库 执行经过身份验证的http请求。
importatlassian_jwt_authfromatlassian_jwt_auth.contrib.requestsimportJWTAuthsigner=atlassian_jwt_auth.create_signer('issuer','issuer/key',private_key_pem)response=requests.get('https://your-url',auth=JWTAuth(signer,'audience'))
也可以使用atlassian_jwt_auth.contrib.aiohttp.JWTAuth 验证aiohttp请求:
importaiohttpimportatlassian_jwt_authfromatlassian_jwt_auth.contrib.aiohttpimportJWTAuthsigner=atlassian_jwt_auth.create_signer('issuer','issuer/key',private_key_pem)asyncwithaiohttp.ClientSession()assession:asyncwithsession.get('https://your-url',auth=JWTAuth(signer,'audience'))asresp:...
如果要重用在其有效期内具有相同声明的令牌 然后在调用create-signer时通过reuse-jwts=true。 例如:
importatlassian_jwt_authfromatlassian_jwt_auth.contrib.requestsimportJWTAuthsigner=atlassian_jwt_auth.create_signer('issuer','issuer/key',private_key_pem,reuse_jwts=True)response=requests.get('https://your-url',auth=JWTAuth(signer,'audience'))
验证jwt
importatlassian_jwt_authpublic_key_retriever=atlassian_jwt_auth.HTTPSPublicKeyRetriever('https://example.com')verifier=atlassian_jwt_auth.JWTAuthVerifier(public_key_retriever)verified_claims=verifier.verify_jwt(a_jwt,'audience')
对于从Python 3.5^{tt8}开始的python版本$ 为下列组件提供插入式替换 执行http请求,以便它们使用aiohttp,而不是requests:
importatlassian_jwt_auth.contrib.aiohttppublic_key_retriever=atlassian_jwt_auth.contrib.aiohttp.HTTPSPublicKeyRetriever('https://example.com')verifier=atlassian_jwt_auth.contrib.aiohttp.JWTAuthVerifier(public_key_retriever)verified_claims=awaitverifier.verify_jwt(a_jwt,'audience')