我正在使用部署在 Amazon Elastic Kubernetes Service ( EKS ) 上的 Web 应用程序。用户身份验证通过 Okta 完成。一切正常,但如果我已登录,我希望 Web 应用程序显示我的姓名,即当前用户的姓名。
有一篇博客文章详细描述了我所拥有的设置类型,这也是通过 Terraform 完成的。到目前为止,我对此的在线搜索使我找到了有关如何设置身份验证(已经完成)而不是如何获取当前用户的答案。
我的基本理解是:原始请求发送到应用程序负载均衡器 (ALB),并使用 Okta 处理身份验证。最终结果是一个会话 cookie,应用程序通过浏览器将其与未来的请求一起发送,以便它们最终到达后端可以响应的目标 IP。这是AWS 文档中有关身份验证流程的相关文本:
“负载均衡器验证 ID 令牌后,它会与 IdP 用户信息端点交换访问令牌以获取用户声明。
负载均衡器创建身份验证会话 cookie 并将其发送到客户端,以便客户端的用户代理可以在发出请求时将 cookie 发送到负载均衡器。”
我可以从负载均衡器侦听器规则中看到有一个用户信息端点:https ://myorg.okta.com/oauth2/v1/userinfo但客户端应用程序可以使用它来检索用户详细信息,如果可以,如何? 我尝试curl
使用会话 cookie 但收到 400 错误。
Okta 网站上还记录了一个 API ,它“获取链接到 API 令牌或会话 cookie 的当前用户”:
curl -v -X GET \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: SSWS ${api_token}" \
"https://${yourOktaDomain}/api/v1/users/me"
我没有 API 令牌,所以我尝试使用AWSELBAuthSessionCookie但得到:
{"errorCode":"E0000011","errorSummary":"Invalid token provided","errorLink":"E0000011","errorId":"oaeRNui7fSPQIq_LWuGro5EbV","errorCauses":[]}
任何带有步骤摘要和相关文档链接的答案都会很棒。谢谢你。