公司动态
FastAPI-Azure-Auth 是什么?为什么你的 API 需要它来守护身份安全
FastAPI-Azure-Auth 是什么?为什么你的 API 需要它来守护身份安全【免费下载链接】fastapi-azure-authEasy and secure implementation of Azure Entra ID (previously AD) for your FastAPI APIs B2C, single- and multi-tenant support.项目地址: https://gitcode.com/gh_mirrors/fa/fastapi-azure-authFastAPI-Azure-Auth 是一个专门为 FastAPI 打造的 Azure Entra ID原 Azure AD身份认证库让 Python 开发者可以用极简代码为 API 接入企业级身份验证与授权。还在手写 JWT 校验、纠结单租户多租户配置这篇文章带你 5 分钟看懂 FastAPI 身份认证的正确打开方式了解为什么你的 API 需要它来守护身份安全。你的 API 正面临哪些身份安全风险很多 FastAPI 项目上线时认证逻辑还是自己造轮子手写中间件解析 Token、自己管理公钥缓存、不同租户的配置散落在代码各处。这样做往往带来三个隐患安全漏洞Token 签名校验不严谨、密钥泄露后无法快速轮换重复劳动每个接口都要重复编写权限判断扩展困难从单租户切换到多租户、接入 B2C 时代码几乎要重写。FastAPI-Azure-Auth 正是为解决这些问题而生它把 Azure Entra ID 的认证、授权能力封装成 FastAPI 原生依赖开箱即用。FastAPI-Azure-Auth 的核心能力一览这个库的核心逻辑集中在fastapi_azure_auth/目录下主要模块包括auth.py提供三种开箱即用的认证方案类user.py定义User与Claims模型把 Token 中的 claims 转成类型安全的对象openid_config.py自动拉取并缓存 OpenID 配置与签名公钥exceptions.py统一处理认证失败、权限不足等异常。三种认证方案覆盖全部业务场景在 auth.py 中你可以根据应用类型选择对应的类认证方案适用场景SingleTenantAzureAuthorizationCodeBearer单租户应用只允许本企业用户登录MultiTenantAzureAuthorizationCodeBearer多租户 SaaS 应用允许任意 Entra ID 租户登录B2CMultiTenantAuthorizationCodeBearer面向消费者的 B2C 应用支持社交账号登录使用方式非常直观在 demo_project/api/dependencies.py 中可以看到标准写法声明一个全局的azure_scheme指定app_client_id、tenant_id和scopes然后把它作为依赖注入到路由里即可。自动验证 JWT无需手写校验逻辑启用后库会自动完成访问令牌的签名验证、过期时间检查、audience与issuer校验并自动从 Azure 拉取最新公钥。多租户场景下你还可以通过iss_callable自定义校验逻辑只允许特定租户访问——具体示例见 demo_project/api/dependencies.py 中的IssuerFetcher类。类型安全的用户对象验证通过后你拿到的不是一串难以阅读的 JSON而是一个类型安全的User对象。在 user.py 中User模型封装了roles角色、scp权限范围、email、upn、is_guest是否访客用户等字段。这意味着你可以直接在业务代码中这样判断权限判断user.roles是否包含AdminUser角色检查user.is_guest是否为True来拒绝访客访问通过user.access_token配合 Graph API 获取更多用户信息。与 Swagger UI 无缝集成调试体验极佳这是 FastAPI-Azure-Auth 最讨喜的特性之一接入后你的 Swagger UI 右上角会自动出现一个绿色的Authorize按钮点击即可通过 Azure 登录并授权然后在文档页内直接调试受保护接口完全不需要另开 Postman。集成方式也很简单在 demo_project/main.py 中可以看到初始化FastAPI时配置swagger_ui_oauth2_redirect_url和swagger_ui_init_oauth开启 PKCE 授权码模式再通过Security(azure_scheme, scopes[...])把认证挂在路由上即可。三步快速接入你的 FastAPI 项目第一步安装依赖在项目根目录执行uv add fastapi-azure-auth第二步在 Azure 门户注册应用进入 Azure 门户创建应用注册记录应用(客户端)ID与租户 ID并在API 权限中配置openid、email、profile、offline_access等委托权限这样 OpenAPI 文档才能完成授权码流程。第三步注入认证依赖在main.py中引入azure_scheme将其作为路由的全局依赖同时建议在应用启动时预加载 OpenID 配置await azure_scheme.openid_config.load_config()避免首次请求时产生额外延迟。进阶玩法角色控制、访客管理与 Graph API接入基础认证只是第一步FastAPI-Azure-Auth 还支持更精细的授权控制基于角色的访问控制检查user.roles拒绝非管理员调用管理接口多租户白名单通过iss_callable动态校验租户只放行白名单内的企业Graph API 集成利用user.access_token发起 On-Behalf-Of 流程获取 Graph Token 后查询用户信息完整示例见 demo_project/api/api_v1/endpoints/graph.py多认证方案共存Azure 认证与 API Key 可以并存auto_errorFalse模式下由你决定最终的放行策略示例见 demo_project/api/dependencies.py 中的multi_auth。结语身份认证是 API 安全的第一道防线与其花大量时间维护自研认证代码不如站在成熟方案的肩膀上。FastAPI-Azure-Auth 把 Azure Entra ID 的认证复杂度封装成几行配置无论是单租户、多租户还是 B2C 场景都能快速落地。如果你正在开发 FastAPI 项目不妨动手试试——它可能是你今年接入的最省心的安全组件。【免费下载链接】fastapi-azure-authEasy and secure implementation of Azure Entra ID (previously AD) for your FastAPI APIs B2C, single- and multi-tenant support.项目地址: https://gitcode.com/gh_mirrors/fa/fastapi-azure-auth创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考