20. 设置社交认证

身份验证方法有助于简化最终用户的登录 — 提供使用现有登录信息进行单点登录以登录第三方网站,而不是专门为此网站创建新的登录帐户。

帐户身份验证可以在 AWX 用户界面中配置并保存到 PostgreSQL 数据库。有关说明,请参阅AWX 配置部分。

可以将 AWX 中的帐户身份验证配置为集中使用 OAuth2,而企业级帐户身份验证可以为AzureRADIUSSAML甚至LDAP配置为身份验证信息的来源。有关更多详细信息,请参阅设置企业认证

对于提供帐户信息的网站(例如 Microsoft Azure、Google 或 GitHub),帐户信息通常使用 OAuth 标准实现。OAuth 是一种安全的授权协议,通常与帐户身份验证结合使用,以授予第三方应用程序“会话令牌”,允许它们代表用户向提供程序发出 API 调用。

安全断言标记语言(SAML)是一种基于 XML 的开放标准数据格式,用于在身份提供者和服务提供者之间交换帐户身份验证和授权数据。

可以使用RADIUS分布式客户端/服务器系统来保护网络免受未经授权的访问,并且可以在需要高级安全性的网络环境中实施,同时为远程用户维护网络访问。

20.1. GitHub 设置

要为 GitHub 设置社交身份验证,您需要为 Web 应用程序获取 OAuth2 密钥和密钥。为此,您必须首先在https://github.com/settings/developers上向 GitHub 注册新应用程序。为了注册应用程序,您必须为其提供您的主页 URL,即 GitHub 默认设置页面“详细信息”选项卡中显示的回调 URL。OAuth2 密钥(客户端 ID)和密钥(客户端密钥)将用于提供 AWX 用户界面中所需的字段。

  1. 从左侧导航栏中点击设置

  2. 在“设置”窗口的左侧,从身份验证选项列表中点击GitHub 设置

  3. 如果尚未选择,请点击GitHub 默认选项卡。

GitHub OAuth2 回调 URL字段已预先填充且不可编辑。注册应用程序后,GitHub 会显示客户端 ID 和客户端密钥。

  1. 点击编辑并将 GitHub 的客户端 ID 复制并粘贴到GitHub OAuth2 密钥字段中。

  2. 将 GitHub 的客户端密钥复制并粘贴到GitHub OAuth2 密钥字段中。

  3. 有关完成映射字段的详细信息,请参阅组织和团队映射

  4. 完成后,点击保存

  5. 要验证身份验证是否已正确配置,请注销 AWX,登录屏幕现在将显示 GitHub 徽标,以允许使用这些凭据登录。

../_images/configure-awx-auth-github-logo.png

20.1.1. GitHub 组织设置

在使用组织或组织内的团队定义帐户身份验证时,您应该使用特定的组织和团队设置。帐户身份验证可以通过组织以及组织内的团队来限制。

您还可以选择通过指定非组织或非团队设置(如上所示)来允许所有用户。

您可以通过仅限制组织或组织内团队中的用户来限制可以登录 AWX 的用户。

要为 GitHub 组织设置社交身份验证,您需要为 Web 应用程序获取 OAuth2 密钥和密钥。为此,您必须首先在https://github.com/organizations/<yourorg>/settings/applications上注册您的组织拥有的应用程序。为了注册应用程序,您必须为其提供您的授权回调 URL,即“详细信息”页面中显示的回调 URL。每个密钥和密钥必须属于唯一的应用程序,不能在不同的身份验证后端之间共享或重复使用。OAuth2 密钥(客户端 ID)和密钥(客户端密钥)将用于提供 AWX 用户界面中所需的字段。

  1. 从左侧导航栏中点击设置

  2. 在“设置”窗口的左侧,从身份验证选项列表中点击GitHub 设置

  3. 点击GitHub 组织选项卡。

GitHub 组织 OAuth2 回调 URL字段已预先填充且不可编辑。

注册应用程序后,GitHub 会显示客户端 ID 和客户端密钥。

  1. 点击编辑并将 GitHub 的客户端 ID 复制并粘贴到GitHub 组织 OAuth2 密钥字段中。

  2. 将 GitHub 的客户端密钥复制并粘贴到GitHub 组织 OAuth2 密钥字段中。

  3. GitHub 组织名称字段中输入您的 GitHub 组织的名称,该名称用于您的组织的 URL(例如,https://github.com/<yourorg>/)。

  4. 有关完成映射字段的详细信息,请参阅组织和团队映射

  5. 完成后,点击保存

  6. 要验证身份验证是否已正确配置,请注销 AWX,登录屏幕现在将显示 GitHub 组织徽标,以允许使用这些凭据登录。

../_images/configure-awx-auth-github-orgs-logo.png

20.1.2. GitHub 团队设置

要为 GitHub 团队设置社交身份验证,您需要为 Web 应用程序获取 OAuth2 密钥和密钥。为此,您必须首先在https://github.com/organizations/<yourorg>/settings/applications上注册您的团队拥有的应用程序。为了注册应用程序,您必须为其提供您的授权回调 URL,即“详细信息”页面中显示的回调 URL。每个密钥和密钥必须属于唯一的应用程序,不能在不同的身份验证后端之间共享或重复使用。OAuth2 密钥(客户端 ID)和密钥(客户端密钥)将用于提供 AWX 用户界面中所需的字段。

  1. 使用 GitHub API 查找数字团队 ID:http://fabian-kostadinov.github.io/2015/01/16/how-to-find-a-github-team-id/。团队 ID 将用于提供 AWX 用户界面中所需的字段。

  2. 从左侧导航栏中点击设置

  3. 在“设置”窗口的左侧,从身份验证选项列表中点击GitHub 设置

  4. 点击GitHub 团队选项卡。

GitHub 团队 OAuth2 回调 URL字段已预先填充且不可编辑。注册应用程序后,GitHub 会显示客户端 ID 和客户端密钥。

  1. 点击编辑并将 GitHub 的客户端 ID 复制并粘贴到GitHub 团队 OAuth2 密钥字段中。

  2. 将 GitHub 的客户端密钥复制并粘贴到GitHub 团队 OAuth2 密钥字段中。

  3. 将 GitHub 的团队 ID 复制并粘贴到GitHub 团队 ID字段中。

  4. 有关完成映射字段的详细信息,请参阅组织和团队映射

  5. 完成后,点击保存

  6. 要验证身份验证是否已正确配置,请注销 AWX,登录屏幕现在将显示 GitHub 团队徽标,以允许使用这些凭据登录。

../_images/configure-awx-auth-github-teams-logo.png

20.1.3. GitHub Enterprise 设置

要为 GitHub Enterprise 设置社交身份验证,您需要获取 GitHub Enterprise URL、API URL、Web 应用程序的 OAuth2 密钥和密钥。要获取 URL,请参阅有关GitHub Enterprise 管理的 GitHub 文档。要获取密钥和密钥,您必须首先在https://github.com/organizations/<yourorg>/settings/applications上注册您的企业拥有的应用程序。为了注册应用程序,您必须为其提供您的授权回调 URL,即“详细信息”页面中显示的回调 URL。由于它托管在本地而不是 github.com 上,因此您必须指定它将与哪个身份验证适配器通信。

每个密钥和密钥必须属于唯一的应用程序,不能在不同的身份验证后端之间共享或重复使用。OAuth2 密钥(客户端 ID)和密钥(客户端密钥)将用于提供 AWX 用户界面中所需的字段。

  1. 从左侧导航栏中点击设置

  2. 在“设置”窗口的左侧,从身份验证选项列表中点击GitHub 设置

  3. 点击GitHub Enterprise选项卡。

GitHub Enterprise OAuth2 回调 URL字段已预先填充且不可编辑。注册应用程序后,GitHub 会显示客户端 ID 和客户端密钥。

  1. 点击编辑以配置 GitHub Enterprise 设置。

  2. GitHub Enterprise URL字段中,输入 GitHub Enterprise 实例的主机名(例如,https://github.example.com)。

  3. GitHub Enterprise API URL字段中,输入 GitHub Enterprise 实例的 API URL(例如,https://github.example.com/api/v3)。

  4. 将 GitHub 的客户端 ID 复制并粘贴到GitHub Enterprise OAuth2 密钥字段中。

  5. 将 GitHub 的客户端密钥复制并粘贴到GitHub Enterprise OAuth2 密钥字段中。

  6. 有关完成映射字段的详细信息,请参阅组织和团队映射

  7. 完成后,点击保存

  8. 要验证身份验证是否已正确配置,请注销 AWX,登录屏幕现在将显示 GitHub Enterprise 徽标,以允许使用这些凭据登录。

../_images/configure-awx-auth-github-ent-logo.png

20.1.4. GitHub Enterprise 组织设置

要为 GitHub Enterprise 组织设置社交认证,您需要获取 GitHub Enterprise 组织 URL、组织 API URL 以及 Web 应用程序的组织 OAuth2 密钥和密钥。要获取 URL,请参阅 GitHub 关于GitHub Enterprise 管理 的文档。要获取密钥和密钥,您必须首先在 https://github.com/organizations/<yourorg>/settings/applications 注册您的企业组织拥有的应用程序。为了注册应用程序,您必须提供您的授权回调 URL,即“详细信息”页面中显示的**回调 URL**。由于它托管在本地而不是 github.com,因此您必须指定它将与哪个身份验证适配器通信。

每个密钥和密钥必须属于唯一的应用程序,不能在不同的身份验证后端之间共享或重复使用。OAuth2 密钥(客户端 ID)和密钥(客户端密钥)将用于提供 AWX 用户界面中所需的字段。

  1. 从左侧导航栏中点击设置

  2. 在“设置”窗口的左侧,从身份验证选项列表中点击GitHub 设置

  3. 点击**GitHub Enterprise 组织**选项卡。

**GitHub Enterprise 组织 OAuth2 回调 URL**字段已预先填充且不可编辑。注册应用程序后,GitHub 会显示客户端 ID 和客户端密钥。

  1. 点击**编辑**以配置 GitHub Enterprise 组织设置。

  2. 在**GitHub Enterprise 组织 URL**字段中,输入 GitHub Enterprise 组织实例的主机名(例如,https://github.orgexample.com)。

  3. 在**GitHub Enterprise 组织 API URL**字段中,输入 GitHub Enterprise 组织实例的 API URL(例如,https://github.orgexample.com/api/v3)。

  4. 将 GitHub 的客户端 ID 复制粘贴到**GitHub Enterprise 组织 OAuth2 密钥**字段中。

  5. 将 GitHub 的客户端密钥复制粘贴到**GitHub Enterprise 组织 OAuth2 密钥**字段中。

  6. 在**GitHub Enterprise 组织名称**字段中,输入您 GitHub Enterprise 组织的名称,该名称用于您组织的 URL 中(例如,https://github.com/<yourorg>/)。

  7. 有关完成映射字段的详细信息,请参阅组织和团队映射

  8. 完成后,点击保存

  9. 要验证身份验证是否配置正确,请注销 AWX,登录屏幕现在将显示 GitHub Enterprise 组织徽标,以允许使用这些凭据登录。

../_images/configure-awx-auth-github-ent-org-logo.png

20.1.5. GitHub Enterprise 团队设置

要为 GitHub Enterprise 团队设置社交认证,您需要获取 GitHub Enterprise 组织 URL、组织 API URL 以及 Web 应用程序的组织 OAuth2 密钥和密钥。要获取 URL,请参阅 GitHub 关于GitHub Enterprise 管理 的文档。要获取密钥和密钥,您必须首先在 https://github.com/organizations/<yourorg>/settings/applications 注册您的企业团队拥有的应用程序。为了注册应用程序,您必须提供您的授权回调 URL,即“详细信息”页面中显示的**回调 URL**。由于它托管在本地而不是 github.com,因此您必须指定它将与哪个身份验证适配器通信。

每个密钥和密钥必须属于唯一的应用程序,不能在不同的身份验证后端之间共享或重复使用。OAuth2 密钥(客户端 ID)和密钥(客户端密钥)将用于提供 AWX 用户界面中所需的字段。

  1. 使用 GitHub API 查找数字团队 ID:http://fabian-kostadinov.github.io/2015/01/16/how-to-find-a-github-team-id/。团队 ID 将用于提供 AWX 用户界面中所需的字段。

  2. 从左侧导航栏中点击设置

  3. 在“设置”窗口的左侧,从身份验证选项列表中点击GitHub 设置

  4. 点击**GitHub Enterprise 团队**选项卡。

**GitHub Enterprise 团队 OAuth2 回调 URL**字段已预先填充且不可编辑。注册应用程序后,GitHub 会显示客户端 ID 和客户端密钥。

  1. 点击**编辑**以配置 GitHub Enterprise 团队设置。

  2. 在**GitHub Enterprise 团队 URL**字段中,输入 GitHub Enterprise 团队实例的主机名(例如,https://github.teamexample.com)。

  3. 在**GitHub Enterprise 团队 API URL**字段中,输入 GitHub Enterprise 团队实例的 API URL(例如,https://github.teamexample.com/api/v3)。

  4. 将 GitHub 的客户端 ID 复制粘贴到**GitHub Enterprise 团队 OAuth2 密钥**字段中。

  5. 将 GitHub 的客户端密钥复制粘贴到**GitHub Enterprise 团队 OAuth2 密钥**字段中。

  6. 将 GitHub 的团队 ID 复制粘贴到**GitHub Enterprise 团队 ID**字段中。

  7. 有关完成映射字段的详细信息,请参阅组织和团队映射

  8. 完成后,点击保存

  9. 要验证身份验证是否配置正确,请注销 AWX,登录屏幕现在将显示 GitHub Enterprise 团队徽标,以允许使用这些凭据登录。

../_images/configure-awx-auth-github-ent-teams-logo.png

20.2. Google OAuth2 设置

要为 Google 设置社交认证,您需要获取 Web 应用程序的 OAuth2 密钥和密钥。为此,您必须首先创建一个项目并使用 Google 设置它。请参阅https://support.google.com/googleapi/answer/6158849 获取说明。如果您已完成设置过程,则可以通过转到Google API 管理器控制台 的“凭据”部分来访问这些凭据。OAuth2 密钥(客户端 ID)和密钥(客户端密钥)将用于提供 AWX 用户界面中所需的字段。

  1. 从左侧导航栏中点击设置

  2. 在“设置”窗口的左侧,从身份验证选项列表中点击**Google OAuth 2 设置**。

**Google OAuth2 回调 URL**字段已预先填充且不可编辑。

  1. 以下字段也已预先填充。如果没有,请使用 Google 在 Web 应用程序设置过程中提供的凭据,并查找与以下示例中显示的格式相同的 value。

  • 点击**编辑**并将 Google 的客户端 ID 复制粘贴到**Google OAuth2 密钥**字段中。

  • 将 Google 的客户端密钥复制粘贴到**Google OAuth2 密钥**字段中。

    ../_images/configure-awx-auth-google.png
  1. 要填写其余可选字段,请参阅每个字段中的工具提示以获取说明和所需的格式。

  2. 有关完成映射字段的详细信息,请参阅组织和团队映射

  3. 完成后,点击保存

  4. 要验证身份验证是否配置正确,请注销 AWX,登录屏幕现在将显示 Google 徽标,以将其指示为登录 AWX 的替代方法。

../_images/configure-awx-auth-google-logo.png

20.3. 组织和团队映射

20.3.1. 组织映射

您需要根据用户的用户名和电子邮件地址控制哪些用户被放置到哪些组织中(从社交或企业级身份验证帐户映射您的组织管理员/用户)。

字典键是组织名称。如果组织尚不存在且许可证允许多个组织,则将创建组织。否则,无论键是什么,都将使用单个默认组织。

value 是定义每个组织成员资格选项的字典。对于每个组织,都可以指定哪些用户自动成为该组织的用户,以及哪些用户可以管理该组织。

**admins**:None、True/False、字符串或字符串列表/元组。

  • 如果为**None**,则组织管理员将不会更新。

  • 如果为**True**,则使用帐户身份验证的所有用户都将自动添加为该组织的管理员。

  • 如果为**False**,则不会将任何帐户身份验证用户自动添加为该组织的管理员。

  • 如果为字符串或字符串列表,则指定将添加到组织的用户名的用户名和电子邮件地址。以 / 开头和结尾的字符串将被编译成正则表达式;修饰符 i(不区分大小写)和 m(多行)可以在结尾的 / 之后指定。

**remove_admins**:True/False。默认为**True**。

  • 当为**True**时,不匹配的用户将从组织的管理列表中删除。

**users**:None、True/False、字符串或字符串列表/元组。应用与**admins**相同的规则。

**remove_users**:True/False。默认为**True**。应用与**remove_admins**相同的规则。

{
    "Default": {
        "users": true
    },
    "Test Org": {
        "admins": ["[email protected]"],
        "users": true
    },
    "Test Org 2": {
        "admins": ["[email protected]", "/^awx-[^@]+?@.*$/i"],
        "users": "/^[^@].*?@example\\.com$/"
    }
}

可以为每个帐户身份验证后端分别指定组织映射。如果已定义,则这些配置将优先于上面的全局配置。

SOCIAL_AUTH_GOOGLE_OAUTH2_ORGANIZATION_MAP = {}
SOCIAL_AUTH_GITHUB_ORGANIZATION_MAP = {}
SOCIAL_AUTH_GITHUB_ORG_ORGANIZATION_MAP = {}
SOCIAL_AUTH_GITHUB_TEAM_ORGANIZATION_MAP = {}
SOCIAL_AUTH_SAML_ORGANIZATION_MAP = {}

20.3.2. 团队映射

团队映射是从社交身份验证帐户映射团队成员(用户)。键是团队名称(如果不存在则会创建)。value 是每个团队成员资格选项的字典,其中每个字典都可以包含以下参数

**organization**:字符串。团队所属的组织的名称。如果组织和团队名称的组合不存在,则将创建该团队。如果组织不存在,则首先创建该组织。如果许可证不允许多个组织,则团队将始终分配给单个默认组织。

**users**:None、True/False、字符串或字符串列表/元组。

  • 如果为**None**,则团队成员将不会更新。

  • 如果为**True**/**False**,则所有社交身份验证用户都将添加/删除为团队成员。

  • 如果为字符串或字符串列表,则指定用于匹配用户的表达式。如果用户名或电子邮件匹配,则用户将添加为团队成员。以 / 开头和结尾的字符串将被编译成正则表达式;修饰符 i(不区分大小写)和 m(多行)可以在结尾的 / 之后指定。

**remove**:True/False。默认为**True**。当为**True**时,不符合上述规则的用户将从团队中删除。

{
    "My Team": {
        "organization": "Test Org",
        "users": ["/^[^@]+?@test\\.example\\.com$/"],
        "remove": true
    },
    "Other Team": {
        "organization": "Test Org 2",
        "users": ["/^[^@]+?@test\\.example\\.com$/"],
        "remove": false
    }
}

可以为每个帐户身份验证后端分别指定团队映射,具体取决于您设置了哪些后端。如果已定义,则这些配置将优先于上面的全局配置。

SOCIAL_AUTH_GOOGLE_OAUTH2_TEAM_MAP = {}
SOCIAL_AUTH_GITHUB_TEAM_MAP = {}
SOCIAL_AUTH_GITHUB_ORG_TEAM_MAP = {}
SOCIAL_AUTH_GITHUB_TEAM_TEAM_MAP = {}
SOCIAL_AUTH_SAML_TEAM_MAP = {}

取消以下行的注释(即,将SOCIAL_AUTH_USER_FIELDS设置为一个空列表),以防止创建新的用户帐户。只有之前使用社交或企业级身份验证登录过 AWX 的用户,或其电子邮件地址与现有用户帐户匹配的用户才能登录。

SOCIAL_AUTH_USER_FIELDS = []