使用 Okta 配置 OpenID Connect¶
OpenId Connect (OIDC) 是构建在 OAuth2 授权框架之上的身份和身份验证层。本指南介绍了如何使用 Okta 设置 OIDC 作为 DHIS 2 的身份平台。
OIDC 对于跨多个应用程序和系统的_单点登录_非常有用,用户可以登录一次,然后访问许多 DHIS 2 实例和其他类型的系统。对于系统管理员来说,OIDC 允许在一个地方维护用户名、密码和用户停用。
DHIS 2 支持 OIDC,可在 "dhis.conf "配置文件中进行配置。专用配置语法可用于特定身份提供商,包括 Google、Azure 和 WSO2。在本指南中,generic 提供商将用于配置 Okta。
Okta 是一个流行的身份和访问管理平台,支持 OIDC 协议。本教程将介绍如何使用 Okta 为 DHIS 2 设置 OIDC。请参阅 DHIS 2 OIDC [安装指南](https://docs.dhis2.org/en/manage/performing-system-administration/dhis-core- version-236/installation.html#install_oidc_configuration)了解详细信息。
本指南假定 DHIS 2 实例运行于 http://localhost:8080。指南中提到的*提供商密钥*在本例中是**okta**。
注册 Okta 开发者帐户¶
在此步骤中,我们将注册 Okta 免费开发者试用版。
- 导航到 Okta 开发者试用注册:https://developer.okta.com/signup/
- 输入您的工作电子邮件、名字、姓氏和国家/地区。请注意,您输入的电子邮件将成为 Okta 用户名。
- 登录后,导航到 Directory > People 并观察您注册时使用的姓名和电子邮件地址是否存在一个人(用户)。该电子邮件稍后将用于映射到 DHIS 2 用户。您可以稍后创建其他用户。

创建 Okta 应用集成¶
在此步骤中,我们将创建 Okta Web 应用程序集成。

- 导航到 应用程序 > 应用程序。
- 单击**创建应用程序集成**。
- 对于 登录方法,选择 OIDC - OpenID Connect。
- 对于 应用程序类型,选择 Web 应用程序,然后单击 下一步。
- 对于 应用程序集成名称,输入描述性名称,例如 DHIS 2 实例的名称,例如 DHIS 2 HMIS。
- 对于 授权类型 > 客户端代表自身,启用 客户端凭据。
- 对于**代表用户的客户端**,不执行任何操作并确保启用*授权代码*并禁用其他选项。
- 对于**登录重定向 URI**,输入
http://localhost:8080/oauth2/code/okta。模式是{dhis2-base-URL}/oauth2/code/{provider-key}。 DHIS 2 基本 URL 是http://localhost:8080,提供者密钥是okta。 - 将**可信来源**留空。
- 对于**分配**,选择*允许组织中的每个人访问*。
- 点击**保存**。
- 在应用程序概述的 分配 选项卡中,确保分配了相关人员。
记下 Okta 设置¶
在此步骤中,我们将记下相关的 Okta 设置和凭据。

- 导航到应用程序概述屏幕中的**常规**选项卡。
- 单击_复制到剪贴板_按钮记下以下设置。这些设置稍后将在 DHIS 2 配置文件中使用。这些设置应被视为秘密并以安全的方式存储。
- 客户ID
- 客户秘密
- 奥克塔域
- 注销 Okta 门户,以便稍后重新登录。
创建 DHIS 2 用户¶
为了能够登录 DHIS 2,必须为每个 Okta 人员创建 DHIS 2 用户。 DHIS 2 用户通过 DHIS 2 用户 OIDC 映射值 字段映射到 Okta 人员。可以照常向 DHIS 2 用户授予用户角色、用户组和组织单位。

- 使用有权创建用户的常规本地用户登录 DHIS 2。
- 导航到 应用程序 > 用户 > 用户。
- 创建新的 DHIS 2 用户,或更新现有用户。
- 用户名可以是任何用户名。对于新的 DHIS 2 用户,建议(但不要求)使用 Okta 用户名。
- 启用**仅外部身份验证(OpenID 或 LDAP)**。
- 输入用户的 姓氏 和 名字。
- 对于 OIDC 映射值,输入 Okta 用户名(电子邮件)。该值用于将 DHIS 2 用户映射到 Okta 用户。
- 选择适当的用户角色和组织单位。
- 点击**保存**。
配置 DHIS 2¶
在这一步中,我们将配置 DHIS 2 实例,以便通过 dhis.conf DHIS 2 配置文件与 Okta 进行身份验证。
- 查找前面提到的 Okta 设置。请注意,属性密钥中的 "okta "指的是在 Okta 应用程序集成中指定的提供商密钥。
- 找到 DHIS 2 实例的
dhis.conf配置文件。 - 输入下面描述的属性。将以下三个变量(括在括号中)替换为您环境的实际值。
- 客户 ID /
{client_id}。Example:0kh6yTgRg45191j97H6y. - 客户秘密 /
{client_secret}。示例:xJh6ybgh5yajTku7qE35F5h8hj8km7yG-Hj61j49。 - 客户端域/
{client_domain}。示例:dev-123.okta.com。
- 客户 ID /
属性
启用 OIDC¶
oidc.oauth2.login.enabled = on
Okta OIDC 设置¶
oidc.provider.okta.client_id ={client_id} oidc.provider.okta.client_secret ={client_secret} oidc.provider.okta.mapping_claim = email oidc.provider.okta.display_alias = 使用 Okta 登录 oidc.provider.okta.enable_logout = 开 oidc.provider.okta.scopes = 电子邮件 oidc.provider.okta.authorization_uri = https://{client_domain}/oauth2/v1/authorize oidc.provider.okta.token_uri = https://{client_domain}/oauth2/v1/token oidc.provider.okta.user_info_uri = https://{client_domain}/oauth2/v1/userinfo oidc.provider.okta.jwk_uri = https://{client_domain}/oauth2/v1/keys oidc.provider.okta.end_session_endpoint = https://{client_domain}/oauth2/v1/logout
* 请注意,注销 DHIS 2 时,上述配置也会将用户注销 Okta。要确保用户仅从 DHIS 2 注销,请改用下面描述的属性和值。
属性
oidc.provider.okta.end_session_endpoint = /dhis-web-commons-security/logout.action
- 重新启动 DHIS 2 实例以使更改生效。
- Tip: 这些值可通过 URL 路径
/.welliced/openid-configuration(例如https://dev-123-admin.okta.com/.well-known/openid-configuration)从 Okta 获取。
使用 Okta 登录 DHIS 2¶
在此步骤中,我们将测试设置并使用 Okta 登录 DHIS 2。

- 导航至 DHIS 2 登录页面。登录页面上应出现标有 Sign in with Okta 的按钮。
- 单击**使用 Okta 登录** 按钮。您应该被重定向到 Okta 登录页面。请注意,如果您仍然登录 Okta,您将自动登录到 DHIS 2。
- 输入之前创建的帐户的 Okta 用户名和密码,然后单击 登录。您应该被重定向到 DHIS 2 实例,并以之前创建的 DHIS 2 用户身份自动登录。
- 提示: 对于 IdP 发起的 SSO,即登录 Okta 并导航到 DHIS 2 登录页面而不通过 DHIS 2 登录页面,您可以使用以下 DHIS 2 Web URL:
http://localhost :8080/oauth2/授权/okta。
摘要{ #summary }¶
此时,您应该通过 Okta 自动登录 DHIS 2,而无需输入任何 DHIS 2 凭据。
本指南介绍了如何设置 Okta 应用程序和用户、设置映射到 Okta 用户的 DHIS 2 用户、如何为 Okta OIDC 配置 DHIS 2 以及如何使用 Okta 登录。您可以对其他 DHIS 2 实例重复 DHIS 2 用户和配置步骤,以便将它们包含在单点登录设置中。