使用Okta API的Okta登录小部件

Bre*_*mon 1 javascript api okta okta-api

我正在尝试使用Okta的登录小部件和Okta API找出与用户关联的组。

Okta API会返回与用户关联的组,但是仅当我从管理控制台访问它时,我才能够使用它,因此,它必须基于Okta管理员会话,因为如果我不明白,错误:

{"errorCode":"E0000005","errorSummary":"Invalid session","errorLink":"E0000005","errorId":"oaeLznzzAC0QaaLJmjDEls5rA","errorCauses":[]}
Run Code Online (Sandbox Code Playgroud)

如何使用Okta登录小部件和“ 获取成员组 ” API资源根据与用户关联的组来重定向用户?

Joë*_*sic 5

我建议不要配置Okta登录小部件以将组声明直接返回到您的代码中,而不是使用“获取成员组” API资源来获取Okta用户所关联的组。下面的代码显示了如何执行此操作,并检查用户是否在名为“ Example”的组中。

<!DOCTYPE html>
<html>
<head>
  <title>Get Groups for Okta User using the Okta Sign-In Widget</title>
  <script src="https://ok1static.oktacdn.com/assets/js/sdk/okta-signin-widget/1.7.0/js/okta-sign-in.min.js" type="text/javascript"></script>
  <link href="https://ok1static.oktacdn.com/assets/js/sdk/okta-signin-widget/1.7.0/css/okta-sign-in.min.css" type="text/css" rel="stylesheet">
  <link href="https://ok1static.oktacdn.com/assets/js/sdk/okta-signin-widget/1.7.0/css/okta-theme.css" type="text/css" rel="stylesheet">
</head>
<body>
    <div id="okta-login-container"></div>
    <script type="text/javascript">
      var OKTA_ORG_URL = 'https://example.okta.com';
      var OKTA_CLIENT_ID = '0abcdefgHIjkL12mn3oP';

      var oktaSignIn = new OktaSignIn({
          authParams: {
              responseType: 'id_token',
              responseMode: 'okta_post_message',
              scopes: ['openid', 'groups']
          },
          clientId: OKTA_CLIENT_ID,
          baseUrl: OKTA_ORG_URL
      });
      oktaSignIn.renderEl(
          { el: '#okta-login-container' },
          function (res) {
              if (res.status === 'SUCCESS') {
                  console.log('User successfully authenticated');
                  console.log(res);
                  if (res.claims.groups.includes('Example')) {
                      console.log("User in 'Example' group");
                      // Uncomment the line below to redirect to example.com
                      // window.location = "http://www.example.com";
                  }
              }
          }
      );
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

注意:您的Okta应用程序配置为传递所需的组时,必须在“登录”部分中具有“组声明”。网上论坛声明的配置屏幕如下。我已将声明设置为传递用户所分配到的所有组。您可能需要将其配置为仅通过您关心的组。

如何配置Okta应用的网上论坛声明