第 4 章 使用 Microsoft Azure 进行身份验证
使用 Microsoft Azure 验证用户身份:
4.1. 使用 Microsoft Azure 启用身份验证
Red Hat Developer Hub 包括一个 Microsoft Azure 身份验证供应商,可以使用 OAuth 验证用户。
先决条件
- 您有在 Microsoft Azure 中注册应用程序的权限。
- 您 添加了自定义 Developer Hub 应用程序配置。
流程
要允许 Developer Hub 与 Microsoft Azure 进行身份验证,请在 Microsoft Azure 中创建 OAuth 应用程序。
在 Azure 门户中 , 使用 配置创建新注册 :
- Name
- Azure 中的应用程序名称,如 < My Developer Hub>。
在 Home > App registrations > <My Developer Hub > > Manage > ; Authentication 页面中,使用以下配置添加平台 :
- 重定向 URI
-
输入 Developer Hub 中设置的后端身份验证 URI:
https:// <my_developer_hub_url> /api/auth/microsoft/handler/frame
- front-channel logout URL
- 留空。
- 隐式授权和混合流
- 保留所有复选框都未清除。
在 Home > App registrations > ; <My Developer Hub > > Manage > ; API permissions 页面中,添加 Permission,然后为 Microsoft Graph API 添加以下 委派权限 :
-
email
-
offline_access
-
openid
-
配置集
-
user.Read
您在本节和 Developer Hub 配置中定义的 Microsoft Graph API 的可选自定义范围(
app-config-rhdh.yaml
)。注意您的公司可能需要您授予 admin 同意这些权限。即使您的公司不需要管理员同意,您可能也要这样做,因为这意味着用户在第一次访问阶段时不需要单独同意。要授予管理员同意,目录管理员必须进入管理员同意页面,然后单击 COMPANY NAME 的 Grant admin consent 。
-
- 在 Home > App registrations > < My Developer Hub > > Manage > Certificates & Secrets 页的 Client secrets 选项卡中,创建一个 New client secret。
保存下一步:
- 目录(租户)ID
- 应用程序(客户端)ID
- 应用程序(客户端)secret
要将 Microsoft Azure 凭证添加到 Developer Hub,请将以下键/值对添加到 Developer Hub secret 中,如
secrets-rhdh
:AUTH_AZURE_TENANT_ID
- 输入您保存的目录 (租户)ID。
AUTH_AZURE_CLIENT_ID
- 输入您保存的 应用程序(客户端)ID。
AUTH_AZURE_CLIENT_SECRET
- 输入您保存的 应用程序(客户端)secret。
在 Developer Hub 自定义配置中设置 Microsoft Azure 身份验证供应商,如
app-config-rhdh
:app-config-rhdh.yaml
fragmentauth: environment: production providers: microsoft: production: clientId: ${AUTH_AZURE_CLIENT_ID} clientSecret: ${AUTH_AZURE_CLIENT_SECRET} tenantId: ${AUTH_AZURE_TENANT_ID} signInPage: microsoft
环境:production
- 将环境标记为 production,以在 Developer Hub 主页中隐藏 Guest 登录。
clientId
,clientSecret
和tenantId
- 使用您在 Microsoft Azure 中创建并配置了 OpenShift 作为 secret 的 Developer Hub 应用程序信息。
signInPage: microsoft
- 启用 Microsoft Azure 供应商作为默认登录供应商。
可选: 考虑添加以下可选字段:
dangerouslyAllowSignInWithoutUserInCatalog: true
要启用身份验证,而无需在 Developer Hub 软件目录中置备用户。
警告使用
dangerouslyAllowSignInWithoutUserInCatalog
探索 Developer Hub 功能,但不要在生产环境中使用它。带有可选字段的
app-config-rhdh.yaml
片段来允许软件目录中不存在验证用户auth: environment: production providers: microsoft: production: clientId: ${AUTH_AZURE_CLIENT_ID} clientSecret: ${AUTH_AZURE_CLIENT_SECRET} tenantId: ${AUTH_AZURE_TENANT_ID} signInPage: microsoft dangerouslyAllowSignInWithoutUserInCatalog: true
domainHint
可选的用于单租户应用程序。您可以通过从其他租户过滤出帐户,减少具有多个租户中帐户的登录侵权。如果要将此参数用于单租户应用,请取消注释并输入租户 ID。如果您的应用程序注册是多租户的,请将此参数留空。如需更多信息,请参阅 Home Realm Discovery。
带有可选
domainHint
字段的app-config-rhdh.yaml
片段auth: environment: production providers: microsoft: production: domainHint: ${AUTH_AZURE_TENANT_ID}
additionalScopes
可选用于其他范围。要为应用程序注册添加范围,取消注释并输入您要添加的范围列表。default 和 mandatory 值 list:
'openid', 'offline_access', 'profile', 'email', 'User.Read'
.带有可选
additionalScopes
字段的app-config-rhdh.yaml
片段auth: environment: production providers: microsoft: production: additionalScopes: - Mail.Send
对于具有传出访问限制的环境,此步骤是可选的,如防火墙规则。如果您的环境有这种限制,请确保您的 RHDH 后端可以访问以下主机:
-
login.microsoftonline.com
:用于获取和交换授权代码和访问令牌。 -
graph.microsoft.com
:用于检索用户配置文件信息(如源代码中引用)。如果这个主机无法访问,您可能会看到 Authentication failed,在尝试登录时无法获取用户配置集 错误。