Skip to main content

Microsoft Azure 身份验证提供程序

Backstagecore-plugin-api软件包自带 Microsoft 身份验证提供程序,可使用 Azure OAuth 对用户进行身份验证。

在 Azure 上配置应用程序注册

根据贵公司的封锁程度,您可能需要目录管理员来执行部分或全部指示。

转到Azure 门户 > 应用程序注册如果您已有Backstage应用程序注册,请使用该注册而不是创建新注册。

在应用程序注册的概述页面中,添加一个新的Web平台配置,并进行配置:

** 重定向 URI**:https://your-backstage.com/api/auth/microsoft/handler/frame(对于本地开发,通常为http://localhost:7007/api/auth/microsoft/handler/frame) ** 前端通道注销 Url**:空白 ** 隐式授予和混合流**:全部未选中

在** 应用程序权限**标签,点击Add Permission然后添加以下内容Delegated允许Microsoft Graph应用程序接口。

  • email * offline_access * openid * profile * User.Read * 在 app-config.yaml 文件中定义的 Microsoft Graph API 的可选自定义作用域。

您的公司可能要求您授予管理员同意即使贵公司不要求管理员同意,您也可能希望这样做,因为这意味着用户在第一次访问Backstage时不需要单独同意。 要授予管理员同意,目录管理员需要访问此页面并点击授予公司名称的管理许可按钮。

App Registration Permissions

如果您使用的是现有的应用程序注册,而Backstage已经有了客户Secret,您可以重新使用。 如果没有,请转到证书和Secret页面,然后客户Secret请记下这个值,因为下一节会用到。

配置

然后就可以将提供程序配置添加到您的app-config.yaml根目录下auth配置:

auth:
environment: development
providers:
microsoft:
development:
clientId: ${AZURE_CLIENT_ID}
clientSecret: ${AZURE_CLIENT_SECRET}
tenantId: ${AZURE_TENANT_ID}
domainHint: ${AZURE_TENANT_ID}
additionalScopes:
- Mail.Send

微软提供程序是一个包含三个必选配置键的结构:

  • clientId: 应用程序(客户端)ID,在 "应用程序注册">"概述 "中找到 * clientSecret: Secret,在 "应用程序注册">"证书和Secret "中找到 * tenantId: 目录(租户)ID,在 "应用程序注册">"概述 "中找到 * domainHint (可选): 通常与 tenantId 相同。 如果您的应用程序注册为多租户,则留空。 如果指定,则可通过自动过滤掉其他租户的账户,从而减少在多个租户中拥有账户的用户的登录摩擦。 更多详情,请参阅 Home Realm Discovery * additionalScopes (可选): 应用程序注册的作用域列表。默认值和必选值为 ['user.read'].

将提供程序添加到 Backstage 前端

要将提供程序添加到前端,请添加microsoftAuthApiRef参考和SignInPage如图所示将提供商添加到登录页面.

出境网络访问

如果您的环境对外发访问有限制(例如通过防火墙规则),请确保您的Backstage可以访问以下主机:

  • login.microsoftonline.com",用于获取和交换授权码和访问令牌 *"graph.microsoft.com",用于获取用户配置文件信息(如本源代码所示)。如果无法访问该主机,用户在尝试登录时可能会看到 "身份验证失败,获取用户配置文件失败 "的错误信息。