4.2. 将用户从 Microsoft Azure 置备到软件目录
要使用 Microsoft Azure 验证用户身份,请在使用 Microsoft Azure 启用身份验证 后,将用户从 Microsoft Azure 置备到 Developer Hub 软件目录。
先决条件
- 您已使用 Microsoft Azure 启用身份验证。
流程
要启用 Microsoft Azure 成员发现,请编辑自定义 Developer Hub ConfigMap,如
app-config-rhdh
,并将以下行添加到app-config-rhdh.yaml
内容中:带有强制
microsoftGraphOrg
字段的app-config.yaml
片段dangerouslyAllowSignInWithoutUserInCatalog: false catalog: providers: microsoftGraphOrg: providerId: target: https://graph.microsoft.com/v1.0 tenantId: ${AUTH_AZURE_TENANT_ID} clientId: ${AUTH_AZURE_CLIENT_ID} clientSecret: ${AUTH_AZURE_CLIENT_SECRET}
dangerouslyAllowSignInWithoutUserInCatalog: false
- 仅允许 Developer Hub 软件目录中的用户进行身份验证。
target: https://graph.microsoft.com/v1.0
- 定义提供程序所连接的 MSGraph API 端点。您可以更改此参数,以使用不同的版本,如 beta 端点。
tenandId
,clientId
和clientSecret
- 使用您在 Microsoft Azure 中创建的 Developer Hub 应用程序信息,并在 OpenShift 中配置为 secret。
可选: 考虑添加以下
microsoftGraphOrg.providerId
字段:authority: https://login.microsoftonline.com
定义所用的授权。更改该值以使用其他授权机构 , 如 Azure US government。默认值
:https://login.microsoftonline.com。
带有可选
queryMode
字段的app-config.yaml
片段catalog: providers: microsoftGraphOrg: providerId: authority: https://login.microsoftonline.com/
queryMode: basic | advanced
默认情况下,Microsoft Graph API 只提供
用于查询的基本
功能集。某些功能需要高级查询
功能。请参阅 Microsoft Azure 高级查询。带有可选
queryMode
字段的app-config.yaml
片段catalog: providers: microsoftGraphOrg: providerId: queryMode: advanced
user.expand
要在结果中包含单一关系(navigation 属性)引用的扩展资源或集合。在一个请求中只能扩展一个关系。请参阅 Microsoft Graph query expand parameter。这个参数可以与 ] 或 xref:userFilter[ 结合使用。
带有可选
user.expand
字段的app-config.yaml
片段catalog: providers: microsoftGraphOrg: providerId: user: expand: manager
user.filter
过滤用户。请参阅 Microsoft Graph API 和 Microsoft Graph API 查询过滤器参数语法。这个参数和 ???TITLE??? 是相互排斥的,只能指定一个。
带有可选
user.filter
字段的app-config.yaml
片段catalog: providers: microsoftGraphOrg: providerId: user: filter: accountEnabled eq true and userType eq 'member'
user.loadPhotos: true | false
默认加载照片。设置为
false
以不加载用户 photos。带有可选
user.loadPhotos
字段的app-config.yaml
片段catalog: providers: microsoftGraphOrg: providerId: user: loadPhotos: true
user.select
定义要检索的 Microsoft Graph 资源类型。
带有可选
user.select
字段的app-config.yaml
片段catalog: providers: microsoftGraphOrg: providerId: user: select: ['id', 'displayName', 'description']
userGroupMember.filter
使用组成员资格来获取用户。过滤组并获取其成员。这个参数和 ???TITLE??? 是相互排斥的,只能指定一个。
带有可选
userGroupMember.filter
字段的app-config.yaml
片段catalog: providers: microsoftGraphOrg: providerId: userGroupMember: filter: "displayName eq 'Backstage Users'"
userGroupMember.search
使用组成员资格来获取用户。搜索组并获取其成员。这个参数和 ???TITLE??? 是相互排斥的,只能指定一个。
带有可选
userGroupMember.search
字段的app-config.yaml
片段catalog: providers: microsoftGraphOrg: providerId: userGroupMember: search: '"description:One" AND ("displayName:Video" OR "displayName:Drive")'
group.expand
可选参数,在结果中包含单一关系(navigation 属性)引用的扩展资源或集合。在一个请求中只能扩展一个关系。请参阅 https://docs.microsoft.com/en-us/graph/query-parameters#expand-parameter 这个参数与 ] 而不是 xref:userFilter[ 结合使用。
带有可选
group.expand
字段的app-config.yaml
片段catalog: providers: microsoftGraphOrg: providerId: group: expand: member
group.filter
过滤组。请参阅 Microsoft Graph API 查询组语法。
带有可选
group.filter
字段的app-config.yaml
片段catalog: providers: microsoftGraphOrg: providerId: group: filter: securityEnabled eq false and mailEnabled eq true and groupTypes/any(c:c+eq+'Unified')
group.search
搜索组。请参阅 Microsoft Graph API 查询搜索参数。
带有可选
group.search
字段的app-config.yaml
片段catalog: providers: microsoftGraphOrg: providerId: group: search: '"description:One" AND ("displayName:Video" OR "displayName:Drive")'
group.select
要定义要检索的 Microsoft Graph 资源类型。
带有可选
group.select
字段的app-config.yaml
片段catalog: providers: microsoftGraphOrg: providerId: group: select: ['id', 'displayName', 'description']
schedule.frequency
指定自定义调度频率。支持代码中使用的 cron、ISO 持续时间和"human 持续时间"。
带有可选
schedule.frequency
字段的app-config.yaml
片段catalog: providers: microsoftGraphOrg: providerId: schedule: frequency: { hours: 1 }
schedule.timeout
指定自定义超时。支持代码中使用的 ISO 持续时间和"human duration"。
带有可选
schedule.timeout
字段的app-config.yaml
片段catalog: providers: microsoftGraphOrg: providerId: schedule: timeout: { minutes: 50 }
schedule.initialDelay
指定自定义初始延迟。支持代码中使用的 ISO 持续时间和"human duration"。
带有可选
schedule.initialDelay
字段的app-config.yaml
片段catalog: providers: microsoftGraphOrg: providerId: schedule: initialDelay: { seconds: 15}
验证
检查控制台日志,以验证同步是否已完成。
成功同步示例:
backend:start: {"class":"MicrosoftGraphOrgEntityProvider$1","level":"info","message":"Read 1 msgraph users and 1 msgraph groups in 2.2 seconds. Committing...","plugin":"catalog","service":"backstage","taskId":"MicrosoftGraphOrgEntityProvider:default:refresh","taskInstanceId":"88a67ce1-c466-41a4-9760-825e16b946be","timestamp":"2024-06-26 12:23:42"} backend:start: {"class":"MicrosoftGraphOrgEntityProvider$1","level":"info","message":"Committed 1 msgraph users and 1 msgraph groups in 0.0 seconds.","plugin":"catalog","service":"backstage","taskId":"MicrosoftGraphOrgEntityProvider:default:refresh","taskInstanceId":"88a67ce1-c466-41a4-9760-825e16b946be","timestamp":"2024-06-26 12:23:42"}
- 使用 Microsoft Azure 帐户登录。