authlib是构建OAuth和OpenID Connect服务器的终极Python库。包括JWS,JWK,JWA,JWT。
Authlib与Python2.7 +和Python3.6 +兼容。
Authlib v1.0仅支持Python 3.6+。
特点
通用RFC
Authlib提供RFC的通用实现,包括:
-
RFC5849:OAuth 1.0协议
-
RFC6749:OAuth 2.0授权框架
-
RFC7519:JSON Web令牌
-
OIDC:OpenID Connect 1.0
框架整合
客户端和服务器的各种内置高级框架集成,旨在创建无缝体验。
-
Flask OAuth 1.0 / 2.0客户端和提供程序
-
Django OAuth 1.0 / 2.0客户端和提供程序
-
请求OAuth 1.0 / 2.0会话
-
HTTPX OAuth 1.0 / 2.0客户端
-
Starlette OAuth 1.0 / 2.0客户端
-
FastAPI OAuth 1.0 / 2.0客户端
登录密码
由Loginpass提供支持的各种社交网络服务连接:
-
具有OpenID Connect和服务帐户的Google。
-
Twitter OAuth 1连接
-
Dropbox,Reddit,GitHub,Facebook等。
-
Gitlab及其企业OAuth。
-
StackOverflow及其相关服务。
示例
以下是个Flask OAuth客户端的简单概述:
from flask import Flask, jsonify
from authlib.integrations.flask_client import OAuth
app = Flask(__name__)
oauth = OAuth(app)
github = oauth.register('github', {...})
@app.route('/login')
def login():
redirect_uri = url_for('authorize', _external=True)
return github.authorize_redirect(redirect_uri)
@app.route('/authorize')
def authorize():
token = github.authorize_access_token()
# you can save the token into database
profile = github.get('/user', token=token)
return jsonify(profile)