Okta JWT 身份验证(自定义 JWT)
您可以配置 自定义JSON web token 身份验证提供者 ,以对您使用 Okta 管理的用户进行身份验证。
开始之前
要使用 Okta,您需要满足以下条件:
一个 Okta 项目。 要了解更多信息,请参阅 Okta 文档。
一个尚未使用自定义 JWT 身份验证的 App Services App。要了解如何创建新的 App Services App,请参阅创建应用。
如果使用命令行界面,则需要在本地系统上安装 App Services CLI,然后进行身份验证。
如果使用 Admin API,则需要 MongoDB Atlas Admin API 公钥/私钥对。API 密钥必须具有项目所有者权限。
创建 Okta 应用和授权服务器
在 Okta 中创建一个代表客户端应用程序的应用程序。 您创建的应用程序类型取决于您的使用案例。 例如,如果您正在构建 Web 浏览器应用程序,则可以在 Okta 中创建单页应用程序 (SPA) 或 Web 应用程序。
配置应用程序后,在 Okta 中创建一个代表您的 App Services App 的授权服务器。 您可以使用任何名称和描述。 将服务器 Audience设置为 App Services 应用程序的客户端应用程序 ID。 例如, myapp-abcde
。
要详细学习;了解如何设立Okta应用程序和授权服务器,请参阅 创建授权服务器 在 Okta 文档中。
配置自定义 JWT 身份验证提供程序
您可以从用户界面或通过直接使用 CLI 或 Admin API 修改底层配置文件来配置自定义 JWT 身份验证。从下面选择您首选的方法。
在左侧导航菜单中,单击 Authentication。然后单击 Authentication Providers 标签页并选择 Custom JWT 提供程序。
现在,您可以配置自定义 JSON web token 身份验证提供者以与 Okta 项目配合使用。
单击切换,启用提供程序。
将Verification Method设置为Use a JWK URI 。 在JWK URI字段中指定 Okta 授权服务器的 JWK URI。
您的 Okta JWK URI 应如下所示:
https://<Your Okta Domain>/oauth2/<Your Authorization Server ID>/v1/keys 注意
您可以通过授权服务器的Metadata URI链接从 Okta 用户界面获取确切的 JWK URI。 使用
jwks_uri
字段中列出的值。定义Metadata Fields以将数据从 Okta JSON web token 映射到相应的 App Services 用户帐户。
您不必从 Okta JSON web token 映射元数据字段。但是,您可能会发现它们对于将用户信息从 Okta 获取到您的应用程序很有用。 To learn more about metadata fields and how to configure them, see Custom JWT metadata fields .
将Audience的值留空。
单击 Save 并部署更改。
运行以下命令,将--remote
的值替换为您应用的客户端应用 ID。 这会下载应用最新配置文件的本地副本并导航到配置文件目录,该目录与应用使用相同的名称。
appservices pull --remote "myapp-abcde" cd myapp
将新的自定义 JSON Web 令牌身份验证提供者添加到应用的/auth/providers.json
文件中。 使用以下配置作为模板。 确保:
将
jwkURI
值替换为 Okta 授权服务器的 JWK URI。定义自定义JSON web token元数据字段以映射 Okta JSON web token中的数据。 这是可选的,但是您可能会发现字段映射对于将用户信息从 Okta 获取到您的应用程序非常有用。
{ "custom-token": { "name": "custom-token", "type": "custom-token", "disabled": false, "config": { "audience": [], "jwkURI": "https://<Your Okta Domain>/oauth2/<Your Authorization Server ID>/v1/keys", "useJWKURI": true }, "secret_config": { "signingKeys": [] }, "metadata_fields": [] } }
将更改保存到/auth/providers.json
。 然后,推送更新的配置文件以部署您的应用:
appservices push
使用创建身份验证提供者端点将新的自定义 JWT 身份验证提供者添加到您的应用程序。
使用以下配置作为模板。 确保:
指定应用程序的
$PROJECT_ID
和$APP_ID
在
Authorization
标头中包含 Admin API访问权限令牌。将请求正文中的
jwkURI
值替换为 Okta 授权服务器的 JWK URI。定义自定义JSON web token元数据字段以映射 Okta JSON web token中的数据。 这是可选的,但是您可能会发现字段映射对于将用户信息从 Okta 获取到您的应用程序非常有用。
curl "https://services.cloud.mongodb.com/api/admin/v3.0/groups/$PROJECT_ID/apps/$APP_ID/auth_providers" \ -X "POST" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "custom-token", "type": "custom-token", "disabled": false, "config": { "audience": [], "jwkURI": "https://<Your Okta Domain>/oauth2/<Your Authorization Server ID>/v1/keys", "useJWKURI": true }, "secret_config": { "signingKeys": [] }, "metadata_fields": [] }'
使用 Okta JSON web token 登录
配置自定义 JSON web token 身份验证提供者以使用 Okta 后,您可以使用 Okta JSON web token 访问令牌登录您的 App Services App。
将用户登录到 Okta。 要学习;了解操作方法,请参阅相关的 Okta SDK 文档 针对您的平台和编程语言。
从登录响应中获取用户的 Okta 访问令牌。
使用 Okta 访问令牌通过 Atlas App Services 进行身份验证。 您可以通过 HTTP 启动会话或使用 SDK 登录。 要了解如何操作,请参阅您的 SDK 文档: