FastAPI-Azure-Auth 单租户认证完整教程:一步步配置 Azure Entra ID 应用注册
FastAPI-Azure-Auth 单租户认证完整教程一步步配置 Azure Entra ID 应用注册【免费下载链接】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想给 FastAPI 接口加上企业级登录认证却不知道从哪里下手FastAPI-Azure-Auth 正是为此而生的开源库它让Azure Entra ID原 Azure AD单租户认证变得异常简单。本文是一份面向新手的完整教程手把手带你完成 Azure Entra ID 应用注册的每一步配置并把认证无缝接入你的 FastAPI 应用最终在 Swagger 文档里一键登录、安全调用受保护的 API。全程无需纠结复杂的 OAuth2 协议细节跟着做就能跑通为什么选择单租户认证模式在动手配置 Azure Entra ID 应用注册之前先花 30 秒想清楚你的应用场景单租户Single tenant只允许你自己组织Azure 租户内的账号登录适合企业内部系统、私有 API配置最简单、最安全 ✅多租户允许任何组织的账号登录适合 SaaS 产品对外提供服务B2C面向消费者的社交登录场景作为初学者推荐从单租户认证开始后续随时可以迁移到多租户模式。FastAPI-Azure-Auth 在 auth.py 中分别提供了SingleTenantAzureAuthorizationCodeBearer、MultiTenantAzureAuthorizationCodeBearer和B2CMultiTenantAzureAuthorizationCodeBearer三个类用法高度一致先掌握单租户认证其他模式一通百通。准备工作安装库并获取示例项目首先安装依赖需要Python 3.11 及以上版本uv add fastapi-azure-auth如果想参考完整的真实项目结构可以克隆官方示例仓库内含 demo_project/main.py 等完整代码git clone https://gitcode.com/gh_mirrors/fa/fastapi-azure-auth 完整的官方图文说明位于仓库的 azure_setup.mdx 和 fastapi_configuration.mdx本文是它们的精华提炼版。接下来进入正题开始配置 Azure Entra ID 应用注册。整个流程需要创建两个应用注册一个给后端 API一个给 OpenAPISwagger文档使用。第一步创建后端 API 的 Azure Entra ID 应用注册登录 Azure 门户依次进入Microsoft Entra ID → App registrations点击New registration创建新的应用注册。这里有两个关键配置Name给应用起一个合适的名字比如my-awesome-API用户登录授权时会看到这个名字Supported account types选择Accounts in this organizational directory onlySingle tenant这就是单租户认证模式点击Register完成创建后端 API 的应用注册就搞定啦第二步将访问令牌版本切换为 v2创建完成后进入应用注册的Manifest页面。在 JSON 清单中找到requestedAccessTokenVersion字段把它的值从null改为2然后点击Save保存。⚠️ 这个变更在 Azure 侧生效需要一点时间所以官方教程特意把它放在最开始执行好让它在后续步骤完成时已经就绪。新项目一律使用 v2 令牌。第三步记录应用 ID 与租户 ID回到应用注册的Overview概览页面这里有两个关键信息需要复制保存Application (client) ID应用客户端 IDDirectory (tenant) ID租户 ID建议把它们存到项目的.env环境变量文件中方便后续统一管理TENANT_ID你的租户ID APP_CLIENT_ID后端API的应用ID OPENAPI_CLIENT_ID稍后创建的OpenAPI应用ID第四步添加 user_impersonation 应用作用域现在进入应用注册左侧菜单的Expose an API点击 Add a scope。系统会提示设置Application ID URI直接保留默认推荐值形如api://xxxxxxxx-xxxx-xxxx点击Save and continue继续。随后填写作用域信息Scope nameuser_impersonation表示以用户身份访问 APIWho can consent选择Admins and usersAdmin consent display name / description如 Access API as user / Allows the app to access the API as the userUser consent display name / description如 Access API as you / Allows the app to access the API as you创建完成后作用域全名即为api://{APP_CLIENT_ID}/user_impersonation这个值稍后会在 FastAPI 配置中用到务必记住。第五步为 OpenAPI 文档创建专用应用注册为了让 Swagger 文档也能安全登录需要为它单独创建一个应用注册。再次前往App registrations新建注册Name与后端同名并加上- OpenAPI后缀如my-awesome-API - OpenAPISupported account types同样是Single tenantRedirect URI选择平台Single-Page Application (SPA)地址填写http://localhost:8000/oauth2-redirect创建完成后同样执行两步操作在Manifest中把requestedAccessTokenVersion改为2然后在Overview中复制它的 Application (client) ID填入.env文件的OPENAPI_CLIENT_ID。第六步授权 OpenAPI 应用访问后端 API最后一步很关键进入 OpenAPI 应用注册的API permissions点击 Add a permission选择My APIs标签页找到刚才创建的后端 API。勾选user_impersonation作用域并点击Add a permission。至此Azure 侧的配置全部完成 下面把它接入 FastAPI。快速配置把认证接入你的 FastAPI 应用首先在 FastAPI 应用初始化时配置 OpenAPI 的 OAuth2 参数核心在 demo_project/main.py 中app FastAPI( swagger_ui_oauth2_redirect_url/oauth2-redirect, swagger_ui_init_oauth{ usePkceWithAuthorizationCodeGrant: True, clientId: settings.OPENAPI_CLIENT_ID, }, )接着创建认证实例推荐单独放在 demo_project/api/dependencies.py 这类依赖文件中from fastapi_azure_auth import SingleTenantAzureAuthorizationCodeBearer azure_scheme SingleTenantAzureAuthorizationCodeBearer( app_client_idsettings.APP_CLIENT_ID, tenant_idsettings.TENANT_ID, scopes{ fapi://{settings.APP_CLIENT_ID}/user_impersonation: user_impersonation, }, )最后在路由上声明依赖一行代码即可保护你的 APIapp.get(/, dependencies[Security(azure_scheme, scopes[user_impersonation])]) async def root(): return {message: Hello World} 可选优化在应用启动时通过await azure_scheme.openid_config.load_config()预加载 OpenID 配置避免首次登录时的额外等待。OpenID 配置的完整实现细节见 openid_config.py。验证效果在 Swagger 中体验完整登录流程启动应用访问http://localhost:8000/docs。此时 Swagger 页面右上角会出现一个绿色的Authorize按钮点击Authorize在弹出的授权窗口中检查授权方式为 Azure AD - PKCE, Single-tenant即单租户认证 PKCE 授权码流程勾选user_impersonation作用域Client secret 保持留空PKCE 流程不需要它点击 Authorize 后会跳转到微软登录页面完成登录并同意权限请求回到 Swagger 后再次调用受保护的 API就能看到 200 成功响应了常见问题与排错提示redirect URL 报错多半是用了127.0.0.1:8000而不是localhost:8000请保持一致401 Unauthorized检查 Manifest 中的requestedAccessTokenVersion是否已改为2以及作用域名是否与配置完全一致CORS 报错确保在 FastAPI 中配置了CORSMiddleware并把http://localhost:8000加入允许来源忘记配置重定向地址应用注册的 Redirect URI 必须与swagger_ui_oauth2_redirect_url完全匹配结语至此你已经完成了 Azure Entra ID 应用注册的全部配置并成功为 FastAPI 应用接入了安全可靠的单租户认证 整个过程并不复杂创建两个应用注册、切换令牌版本、添加作用域、配置 API 权限最后在代码里组装SingleTenantAzureAuthorizationCodeBearer即可。如果想继续进阶还可以研究多租户认证、B2C 模式或参考仓库 tests/single_tenant 中的测试用例加深理解。快去动手实践吧祝你的 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-auth创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

PFC各向异性后处理技术与工程应用解析

PFC各向异性后处理技术与工程应用解析

1. PFC各向异性后处理的核心价值 在颗粒流模拟领域,PFC(Particle Flow Code)作为一款基于离散元方法的专业软件,其各向异性分析功能一直是岩土工程和材料科学研究的重要工具。但很多用户在完成基础模拟后,往往面临&quo…

2026/8/16 18:26:46 阅读更多 →
PFC各向异性后处理:颗粒流模拟中的方向性力学分析

PFC各向异性后处理:颗粒流模拟中的方向性力学分析

1. 项目概述:PFC各向异性后处理的核心价值 在颗粒流模拟领域,PFC(Particle Flow Code)作为一款基于离散元方法的专业软件,其强大的颗粒间相互作用模拟能力使其在岩土工程、地质力学、材料科学等领域广受青睐。而各向异…

2026/8/16 18:26:46 阅读更多 →
Git高效使用指南:从基础到高阶技巧

Git高效使用指南:从基础到高阶技巧

1. Git核心操作全景指南 作为分布式版本控制系统的事实标准,Git已经渗透到现代开发的每个环节。但很多开发者对Git的理解仍停留在"add-commit-push"三板斧阶段,这就像只掌握了汽车的启动、刹车和方向盘,却不知道如何应对复杂路况。…

2026/8/16 18:26:46 阅读更多 →

最新新闻

IPv4向IPv6过渡技术实战:从双栈到NAT64/DNS64完整指南

IPv4向IPv6过渡技术实战:从双栈到NAT64/DNS64完整指南

1. 背景与核心概念 在当前的互联网开发与运维工作中,你是否遇到过这样的困境:新部署的服务器申请不到公网IPv4地址,导致服务无法对外暴露;或者,公司内部网络设备数量激增,IP地址管理变得异常混乱和低效。这…

2026/8/16 18:57:53 阅读更多 →
UE5 Niagara条带渲染器实战:打造高性能武器拖尾特效

UE5 Niagara条带渲染器实战:打造高性能武器拖尾特效

大家好,我是专注于游戏开发技术分享的博主。在动作游戏或角色扮演游戏中,一个炫酷的武器拖尾效果能极大地提升战斗的打击感和视觉表现力。很多开发者在尝试使用虚幻引擎5的Niagara系统制作类似效果时,常常会遇到轨迹不连续、材质表现不佳或性…

2026/8/16 18:57:53 阅读更多 →
UE5 Niagara实战:从原理到应用,打造动态武器拖尾特效

UE5 Niagara实战:从原理到应用,打造动态武器拖尾特效

这次我们来看一个在虚幻引擎5中实现剑刃拖尾效果的实战教程。这个效果在动作游戏、影视动画和特效展示中非常常见,核心是利用UE5强大的Niagara粒子系统和条带渲染器(Ribbon Renderer)来动态生成跟随武器运动的轨迹。对于开发者或技术美术来说…

2026/8/16 18:57:53 阅读更多 →
深入解析alloca函数:栈上动态内存分配的原理、应用与陷阱

深入解析alloca函数:栈上动态内存分配的原理、应用与陷阱

1. 项目概述:栈上动态内存的“魔法”在C语言的开发世界里,内存管理是每个程序员都必须面对的课题。我们熟知malloc和free这对来自堆(Heap)的黄金搭档,它们提供了灵活但相对“沉重”的动态内存分配。然而,你…

2026/8/16 18:57:53 阅读更多 →
戴尔电脑重装系统提示No bootable devices的排查与修复指南

戴尔电脑重装系统提示No bootable devices的排查与修复指南

1. 问题现象与核心原因剖析“No bootable devices found”这行英文提示,对于任何一个在给戴尔电脑重装系统时遇到它的朋友来说,都无异于一盆冷水。屏幕一片漆黑,只有这行冷冰冰的白字,仿佛在宣告所有努力付诸东流。别慌&#xff0…

2026/8/16 18:57:53 阅读更多 →
k3s与Docker集成部署指南:轻量K8s集群的容器运行时切换实践

k3s与Docker集成部署指南:轻量K8s集群的容器运行时切换实践

1. 项目概述:为什么选择 k3s 与 Docker 的组合? 如果你正在寻找一种能在边缘设备、开发机或者资源有限的服务器上快速搭建一个轻量级 Kubernetes 集群的方案,那么 k3s 绝对是一个绕不开的名字。它由 Rancher Labs 出品,本质上是…

2026/8/16 18:56:53 阅读更多 →

日新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/16 6:00:23 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/16 6:00:24 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/16 6:00:27 阅读更多 →