身份验证方法有助于简化最终用户的登录 - 提供使用现有登录信息登录第三方网站的单点登录,而不是专门为此网站创建新的登录帐户。
可以在 Ansible Tower 用户界面中配置帐户身份验证,并保存到 PostgreSQL 数据库。 有关说明,请参阅Tower 配置部分。
可以将 Ansible Tower 中的帐户身份验证配置为集中使用 OAuth2,而可以将企业级帐户身份验证配置为使用 SAML、RADIUS 甚至 LDAP 作为身份验证信息的来源。
对于 Microsoft Azure、Google 或 GitHub 等提供帐户信息的网站,通常使用 OAuth 标准来实现帐户信息。 OAuth 是一种安全的授权协议,通常与帐户身份验证结合使用,以授予第三方应用程序“会话令牌”,使它们能够代表用户向提供商发出 API 调用。
SAML(安全断言标记语言)是一种基于 XML 的开放标准数据格式,用于在身份提供者和服务提供者之间交换帐户身份验证和授权数据。
RADIUS 分布式客户端/服务器系统允许您保护网络免受未经授权的访问,并且可以在需要高安全级别的网络环境中实施,同时维护远程用户的网络访问。
要为 Google 设置社交身份验证,您需要为 Web 应用程序获取 OAuth2 密钥和秘密。 为此,您必须首先创建一个项目,并使用 Google 对其进行设置。 有关说明,请参阅https://support.google.com/googleapi/answer/6158849。 如果您已经完成了设置过程,则可以通过转到Google API 管理器控制台的“凭据”部分来访问这些凭据。 OAuth2 密钥(客户端 ID)和秘密(客户端秘密)将用于在 Ansible Tower 用户界面中提供所需的字段。
在 Ansible Tower 用户界面中,从设置()菜单屏幕中点击**身份验证**。
默认情况下,Azure AD 选项卡最初显示。
选择**Google OAuth2**选项卡。
**Google OAuth2 回调 URL**字段已预先填充且不可编辑。
以下字段也已预先填充。 如果没有,请使用 Google 在 Web 应用程序设置过程中提供的凭据,并查找与以下示例中显示的格式相同的 value。
将 Google 的客户端 ID 复制并粘贴到**Google OAuth2 密钥**字段中。
将 Google 的客户端秘密复制并粘贴到**Google OAuth2 秘密**字段中。
要完成其余可选字段,请参阅每个字段中的工具提示以获取说明和必需的格式。
有关完成映射字段的详细信息,请参阅组织和团队映射。
完成后点击**保存**。
要验证身份验证是否已正确配置,请注销 Ansible Tower,登录屏幕现在将显示 Google 徽标,以指示它作为登录 Ansible Tower 的替代方法。
要为 GitHub 设置社交身份验证,您需要为 Web 应用程序获取 OAuth2 密钥和秘密。 为此,您必须首先在https://github.com/settings/developers处向 GitHub 注册新应用程序。 为了注册应用程序,您必须向其提供您的主页 URL,即在“配置 Tower”用户界面中显示的回调 URL。 OAuth2 密钥(客户端 ID)和秘密(客户端秘密)将用于在 Ansible Tower 用户界面中提供所需的字段。
在 Ansible Tower 用户界面中,从设置()菜单屏幕中点击**身份验证**。
默认情况下,Azure AD 选项卡最初显示。
选择**GitHub**选项卡。
**GitHub OAuth2 回调 URL**字段已预先填充且不可编辑。
注册应用程序后,GitHub 会显示客户端 ID 和客户端秘密。
将 GitHub 的客户端 ID 复制并粘贴到**GitHub OAuth2 密钥**字段中。
将 GitHub 的客户端秘密复制并粘贴到**GitHub OAuth2 秘密**字段中。
有关完成映射字段的详细信息,请参阅组织和团队映射。
完成后点击**保存**。
要验证身份验证是否已正确配置,请注销 Ansible Tower,登录屏幕现在将显示 GitHub 徽标,允许使用这些凭据登录。
在定义帐户身份验证时,无论是与组织还是组织内的团队,都应使用特定组织和团队设置。帐户身份验证可以被组织限制,也可以被组织内的团队限制。
您也可以选择允许所有用户,方法是指定非组织或非团队的设置(如上所示)。
您可以通过限制仅组织或组织内团队中的用户来限制可以登录 Tower 的用户。
要为 GitHub 组织设置社交身份验证,您需要为 Web 应用程序获取 OAuth2 密钥和密钥。为此,您必须首先在 https://github.com/organizations/<yourorg>/settings/applications
注册您组织拥有的应用程序。为了注册应用程序,您必须为其提供授权回调 URL,即 Configure Tower 用户界面中显示的回调 URL。每个密钥和密钥必须属于唯一的应用程序,不能在不同的身份验证后端之间共享或重复使用。OAuth2 密钥(客户端 ID)和密钥(客户端密钥)将用于在 Ansible Tower 用户界面中提供所需的字段。
在 Ansible Tower 用户界面中,从设置()菜单屏幕中点击**身份验证**。
默认情况下,Azure AD 选项卡最初显示。
选择**GitHub**选项卡,然后从 GitHub 类别下拉菜单列表中选择**GutHub Org**。
**GitHub Organization OAuth2 回调 URL**字段已预先填充,不可编辑。
注册应用程序后,GitHub 会显示客户端 ID 和客户端秘密。
将 GitHub 的客户端 ID 复制并粘贴到**GitHub Organization OAuth2 密钥**字段中。
将 GitHub 的客户端密钥复制并粘贴到**GitHub Organization OAuth2 密钥**字段中。
有关完成映射字段的详细信息,请参阅组织和团队映射。
完成后点击**保存**。
要验证身份验证是否配置正确,请注销 Ansible Tower,登录屏幕现在将显示 GitHub 组织徽标,允许使用这些凭据登录。
要为 GitHub 团队设置社交身份验证,您需要为 Web 应用程序获取 OAuth2 密钥和密钥。为此,您必须首先在 https://github.com/organizations/<yourorg>/settings/applications
注册您团队拥有的应用程序。为了注册应用程序,您必须为其提供授权回调 URL,即 Configure Tower 用户界面中显示的回调 URL。每个密钥和密钥必须属于唯一的应用程序,不能在不同的身份验证后端之间共享或重复使用。OAuth2 密钥(客户端 ID)和密钥(客户端密钥)将用于在 Ansible Tower 用户界面中提供所需的字段。
使用 GitHub API 查找数字团队 ID:http://fabian-kostadinov.github.io/2015/01/16/how-to-find-a-github-team-id/。团队 ID 将用于在 Ansible Tower 用户界面中提供所需的字段。
在 Ansible Tower 用户界面中,从设置()菜单屏幕中点击**身份验证**。
默认情况下,Azure AD 选项卡最初显示。
选择**GitHub**选项卡,然后从 GitHub 类别下拉菜单列表中选择**GutHub Team**。
**GitHub Team OAuth2 回调 URL**字段已预先填充,不可编辑。
注册应用程序后,GitHub 会显示客户端 ID 和客户端秘密。
将 GitHub 的客户端 ID 复制并粘贴到**GitHub Team OAuth2 密钥**字段中。
将 GitHub 的客户端密钥复制并粘贴到**GitHub Team OAuth2 密钥**字段中。
有关完成映射字段的详细信息,请参阅组织和团队映射。
完成后点击**保存**。
要验证身份验证是否配置正确,请注销 Ansible Tower,登录屏幕现在将显示 GitHub 团队徽标,允许使用这些凭据登录。
您需要根据用户名和电子邮件地址控制哪些用户被放置在哪些 Tower 组织中(从社交或企业级身份验证帐户中映射您的组织管理员/用户)。
字典键是组织名称。组织将被创建(如果不存在,并且许可证允许多个组织)。否则,将使用单个默认组织,而不管键是什么。
值是定义每个组织成员资格选项的字典。对于每个组织,可以指定哪些用户是组织的自动用户,以及哪些用户可以管理组织。
**admins**: 无、True/False、字符串或字符串列表/元组。
如果为**无**,则不会更新组织管理员。
如果为**True**,则所有使用帐户身份验证的用户将自动被添加为组织的管理员。
如果为**False**,则没有帐户身份验证的用户将自动被添加为组织的管理员。
如果为字符串或字符串列表,则指定将被添加到组织的用户名的电子邮件地址。以
/
开头和结尾的字符串将被编译成正则表达式;修饰符i
(不区分大小写)和m
(多行)可以在结束的/
之后指定。
**remove_admins**: True/False。默认为**True**。
当为**True**时,不匹配的用户将从组织的管理列表中删除。
**users**: 无、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]", "/^tower-[^@]+?@.*$/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 = {}
团队映射是社交身份验证帐户中团队成员(用户)的映射。键是团队名称(如果不存在,将被创建)。值是每个团队成员资格选项的字典,其中每个可以包含以下参数
**organization**: 字符串。团队所属的组织的名称。如果组织和团队名称的组合不存在,则将创建团队。如果组织不存在,则将首先创建组织。如果许可证不允许多个组织,则团队将始终被分配到单个默认组织。
**users**: 无、True/False、字符串或字符串列表/元组。
如果为**无**,则不会更新团队成员。
如果为**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
为空列表)以防止创建新的用户帐户。只有以前使用社交或企业级身份验证登录过 Tower 的用户或拥有与匹配电子邮件地址的用户帐户才能登录。
SOCIAL_AUTH_USER_FIELDS = []