authlib/authlib
GitHub: authlib/authlib
Authlib 是一个全面的 Python 库,用于构建符合 OAuth 和 OpenID Connect 标准的客户端与服务器。
Stars: 5332 | Forks: 541
[](https://github.com/authlib/authlib/actions)
[](https://pypi.org/project/authlib)
[](https://anaconda.org/conda-forge/authlib)
[](https://pepy.tech/projects/authlib)
[](https://codecov.io/gh/authlib/authlib)
[](https://sonarcloud.io/summary/new_code?id=authlib_authlib)
用于构建 OAuth 和 OpenID Connect 服务器的终极 Python 库。
包含 JWS、JWK、JWA、JWT。
Authlib 兼容 Python3.10+。
## 迁移说明
Authlib 将弃用 `authlib.jose` 模块,请阅读:
- [从 `authlib.jose` 迁移至 `joserfc`](https://jose.authlib.org/en/dev/migrations/authlib/)
## 功能特性
通用的、符合规范的客户端和提供者构建实现:
- [OAuth 1.0 协议](https://docs.authlib.org/en/stable/oauth1/index.html)
- [RFC5849: OAuth 1.0 协议](https://docs.authlib.org/en/stable/oauth1/specs/rfc5849.html)
- [OAuth 2.0 授权框架](https://docs.authlib.org/en/stable/oauth2/index.html)
- [RFC6749: OAuth 2.0 授权框架](https://docs.authlib.org/en/stable/oauth2/specs/rfc6749.html)
- [RFC6750: OAuth 2.0 授权框架:承载令牌用法](https://docs.authlib.org/en/stable/oauth2/specs/rfc6750.html)
- [RFC7009: OAuth 2.0 令牌撤销](https://docs.authlib.org/en/stable/oauth2/specs/rfc7009.html)
- [RFC7523: OAuth 2.0 客户端认证和授权许可的 JWT 配置文件](https://docs.authlib.org/en/stable/oauth2/specs/rfc7523.html)
- [RFC7591: OAuth 2.0 动态客户端注册协议](https://docs.authlib.org/en/stable/oauth2/specs/rfc7591.html)
- [RFC7592: OAuth 2.0 动态客户端注册管理协议](https://docs.authlib.org/en/stable/oauth2/specs/rfc7592.html)
- [RFC7636: OAuth 公共客户端代码交换的证明密钥](https://docs.authlib.org/en/stable/oauth2/specs/rfc7636.html)
- [RFC7662: OAuth 2.0 令牌自省](https://docs.authlib.org/en/stable/oauth2/specs/rfc7662.html)
- [RFC8414: OAuth 2.0 授权服务器元数据](https://docs.authlib.org/en/stable/oauth2/specs/rfc8414.html)
- [RFC8628: OAuth 2.0 设备授权许可](https://docs.authlib.org/en/stable/oauth2/specs/rfc8628.html)
- [RFC9068: OAuth 2.0 访问令牌的 JSON Web Token (JWT) 配置文件](https://docs.authlib.org/en/stable/oauth2/specs/rfc9068.html)
- [RFC9101: OAuth 2.0 授权框架:JWT 保护的授权请求 (JAR)](https://docs.authlib.org/en/stable/oauth2/specs/rfc9101.html)
- [RFC9207: OAuth 2.0 授权服务器颁发者标识](https://docs.authlib.org/en/stable/oauth2/specs/rfc9207.html)
- [Javascript 对象签名和加密](https://docs.authlib.org/en/stable/jose/index.html)
- [RFC7515: JSON Web 签名](https://docs.authlib.org/en/stable/jose/jws.html)
- [RFC7516: JSON Web 加密](https://docs.authlib.org/en/stable/jose/jwe.html)
- [RFC7517: JSON Web 密钥](https://docs.authlib.org/en/stable/jose/jwk.html)
- [RFC7518: JSON Web 算法](https://docs.authlib.org/en/stable/jose/specs/rfc7518.html)
- [RFC7519: JSON Web 令牌](https://docs.authlib.org/en/stable/jose/jwt.html)
- [RFC7638: JSON Web 密钥 (JWK) 指纹](https://docs.authlib.org/en/stable/jose/specs/rfc7638.html)
- [ ] RFC7797: JSON Web 签名 (JWS) 未编码载荷选项
- [RFC8037: JWS 和 JWE 中的 ECDH](https://docs.authlib.org/en/stable/jose/specs/rfc8037.html)
- [ ] draft-madden-jose-ecdh-1pu-04: JOSE 的公钥认证加密:ECDH-1PU
- [OpenID Connect 1.0](https://docs.authlib.org/en/stable/oauth2/specs/oidc.html)
- [x] OpenID Connect 核心 1.0
- [x] OpenID Connect 发现 1.0
- [x] OpenID Connect 动态客户端注册 1.0
- [x] [OpenID Connect RP 发起的登出 1.0](https://openid.net/specs/openid-connect-rpinitiated-1_0.html)
通过 Authlib 内置的客户端集成连接第三方 OAuth 提供者:
- Requests
- [OAuth1Session](https://docs.authlib.org/en/stable/oauth1/client/http/requests.html)
- [OAuth2Session](https://docs.authlib.org/en/stable/oauth2/client/http/requests.html#requests-oauth-2-0)
- [OpenID Connect](https://docs.authlib.org/en/stable/oauth2/client/http/requests.html#requests-openid-connect)
- [AssertionSession](https://docs.authlib.org/en/stable/oauth2/client/http/requests.html#requests-service-account)
- HTTPX
- [AsyncOAuth1Client](https://docs.authlib.org/en/stable/oauth1/client/http/httpx.html)
- [AsyncOAuth2Client](https://docs.authlib.org/en/stable/oauth2/client/http/httpx.html#httpx-oauth-2-0)
- [OpenID Connect](https://docs.authlib.org/en/stable/oauth2/client/http/httpx.html#httpx-oauth-2-0)
- [AsyncAssertionClient](https://docs.authlib.org/en/stable/oauth2/client/http/httpx.html#async-service-account)
- [Flask OAuth 客户端](https://docs.authlib.org/en/stable/oauth2/client/web/flask.html)
- [Django OAuth 客户端](https://docs.authlib.org/en/stable/oauth2/client/web/django.html)
- [Starlette OAuth 客户端](https://docs.authlib.org/en/stable/oauth2/client/web/starlette.html)
- [FastAPI OAuth 客户端](https://docs.authlib.org/en/stable/oauth2/client/web/fastapi.html)
构建你自己的 OAuth 1.0、OAuth 2.0 和 OpenID Connect 提供者:
- Flask
- [Flask OAuth 1.0 提供者](https://docs.authlib.org/en/stable/oauth1/provider/flask/index.html)
- [Flask OAuth 2.0 提供者](https://docs.authlib.org/en/stable/oauth2/authorization-server/flask/index.html)
- [Flask OpenID Connect 1.0 提供者](https://docs.authlib.org/en/stable/oauth2/authorization-server/flask/openid-connect.html)
- Django
- [Django OAuth 1.0 提供者](https://docs.authlib.org/en/stable/oauth1/provider/django/index.html)
- [Django OAuth 2.0 提供者](https://docs.authlib.org/en/stable/oauth2/authorization-server/django/index.html)
- [Django OpenID Connect 1.0 提供者](https://docs.authlib.org/en/stable/oauth2/authorization-server/django/openid-connect.html)
## 有用链接
1. 主页:
。
2. 文档:
。
3. 购买商业许可证:
。
4. 博客:。
5. Twitter:。
6. StackOverflow:。
7. 其他代码仓库:。
8. 订阅 Tidelift:[https://tidelift.com/subscription/pkg/pypi-authlib](https://tidelift.com/subscription/pkg/pypi-authlib?utm_source=pypi-authlib&utm_medium=referral&utm_campaign=links)。
## 安全报告
如果你发现了安全漏洞,请不要发送公开的问题或补丁。
你可以发送电子邮件到 。欢迎附带补丁。
我的 PGP 密钥指纹是:
```
72F8 E895 A70C EBDF 4F2A DFE0 7E55 E3E0 118B 2B4C
```
或者,你可以使用 [Tidelift 安全联系人](https://tidelift.com/security)。
Tidelift 将协调修复和披露。
## 许可证
Authlib 提供两种许可证:
1. BSD 许可证
2. 商业许可证
任何项目,无论是开源还是闭源,都可以使用 BSD 许可证。
如果你的公司需要商业支持,你可以在
[Authlib 计划](https://authlib.org/plans)购买商业许可证。你可以在
找到更多信息。标签:API安全, JSON Web技术, JSON输出, JWA, JWE, JWK, JWS, JWT, OAuth协议, OpenID Connect, SOC Prime, XML 请求, YAML, 令牌处理, 加密实现, 加密算法, 单点登录, 字符串匹配, 安全库, 安全开发, 客户端开发, 开发工具, 授权框架, 服务器端开发, 签名验证, 网络安全, 认证系统, 逆向工具, 隐私保护