Backstage与Azure DevOps集成报错AADSTS900971:未提供回复地址
配置Backstage对接Azure DevOps时遇AADSTS900971错误的解决方案
问题现象
触发登录流程后,Azure SSO抛出错误:缺少返回地址:未提供回复地址(错误码AADSTS900971)
已完成的配置与操作步骤
1. 环境变量配置(env.sh)
#!/bin/bash export AZURE_CLIENT_ID=*********************************... export AZURE_TENANT_ID=*********************************... export AZURE_CLIENT_SECRET=*********************************...
2. app-config.yaml 核心配置片段
auth: environment: development providers: microsoft: development: clientId: ${AZURE_CLIENT_ID} clientSecret: ${AZURE_CLIENT_SECRET} tenantId: ${AZURE_TENANT_ID} domainHint: ${AZURE_TENANT_ID} signIn: resolvers: - resolver: userIdMatchingUserEntityAnnotation integrations: azure: - host: dev.azure.com credentials: - clientId: ${AZURE_CLIENT_ID} clientSecret: ${AZURE_CLIENT_SECRET} tenantId: ${AZURE_TENANT_ID}
3. 后端模块安装与注册
- 执行安装命令:
yarn --cwd packages/backend add @backstage/plugin-auth-backend-module-microsoft-provider yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-azure
- 在
packages/backend/src/index.ts中添加模块:
... // catalog plugin backend.add(import('@backstage/plugin-catalog-backend')); // mods for ado backend.add(import('@backstage/plugin-auth-backend-module-microsoft-provider')); backend.add(import('@backstage/plugin-catalog-backend-module-azure'));
4. 登录页面自定义配置
修改前端登录页面配置(对应文件通常为packages/app/src/components/Root/Root.tsx):
components: { SignInPage: props => ( <SignInPage {...props} auto providers={[ { id: 'azure-devops-auth-provider', title: 'Azure DevOps', message: 'Sign in using Azure DevOps', apiRef: microsoftAuthApiRef, }, ]} /> ), },
解决步骤
错误根源是Azure AD应用注册中未配置匹配Backstage的重定向URI,按以下操作修复:
- 登录Azure门户,进入Azure Active Directory -> 应用注册,定位到你为Backstage创建的应用。
- 左侧菜单选择身份验证,点击添加平台。
- 选择Web类型,输入对应环境的重定向地址:
- 开发环境:
http://localhost:7007/api/auth/microsoft/handler/frame - 生产环境:替换为你的Backstage公网域名对应的路径,格式为
https://<your-backstage-domain>/api/auth/microsoft/handler/frame
- 开发环境:
- 勾选ID令牌(OpenID Connect登录必需),点击配置。
- 保存配置后重启Backstage后端服务,重新测试登录流程。
额外检查:确认app-config.yaml中microsoft provider的环境配置(development/production)与当前运行环境一致,避免变量加载不匹配。
内容的提问来源于stack exchange,提问作者pf12345678910
相关产品推荐
相关产品推荐

