Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Okta与JavaScript的集成_Javascript_Aws Api Gateway_Okta - Fatal编程技术网

Okta与JavaScript的集成

Okta与JavaScript的集成,javascript,aws-api-gateway,okta,Javascript,Aws Api Gateway,Okta,我的任务是将现有的JavaScript应用程序与Okta集成 此应用程序需要访问Amazon的AWS API网关上的某些资源。API网关生成的SDK需要一个访问密钥和一个秘密访问密钥,我们更愿意使用临时凭据 根据AWS文档,调用需要断言 我尝试了以下Okta资源,但无法确定如何使用JavaScript获取断言: : 此设置允许登录AWS控制台 :使用小部件,我无法在返回的内容中找到断言 :未列出JavaScript API/SDK 我已经找到了一些返回临时访问键的Python实现,但还没有找

我的任务是将现有的JavaScript应用程序与Okta集成

此应用程序需要访问Amazon的AWS API网关上的某些资源。API网关生成的SDK需要一个访问密钥和一个秘密访问密钥,我们更愿意使用临时凭据

根据AWS文档,调用需要断言

我尝试了以下Okta资源,但无法确定如何使用JavaScript获取断言:

  • : 此设置允许登录AWS控制台

  • :使用小部件,我无法在返回的内容中找到断言

  • :未列出JavaScript API/SDK

我已经找到了一些返回临时访问键的Python实现,但还没有找到任何示例或文档来描述使用Okta的JavaScript方法


谢谢。

下面是一个示例应用程序,展示了如何使用Okta登录小部件在JavaScript中将Okta与Amazon S3集成:

这个示例应用程序基于Amazon的示例应用程序,但是使用OpenID Connect而不是像Amazon的示例应用程序那样使用Facebook对Okta进行身份验证

请注意,Okta登录小部件(1.7.0)的当前版本包括与Amazon的JavaScript SDK冲突的
xhr
库。这将在Okta登录小部件的1.9.0版中修复,该小部件将删除
xhr
。同时,okta oidc aws repo中的示例附带了禁用了
xhr
的自定义版本的小部件

有关于使示例工作的完整细节

在高层,重要部分如下:

  • 从Okta那里拿到一张支票
  • 使用将Okta
    id\u令牌
    交换为AWS IAM角色。这被称为“”
  • 执行此操作的代码如下所示,直接从示例中的文件复制:

    AWS.config.credentials = new AWS.WebIdentityCredentials({
        RoleArn: AWS_ROLE_ARN,
        WebIdentityToken: res.idToken
    });
    AWS.config.credentials.get(function(err) {
        if (err) {
            console.log("Error creating AWS Web Identity: " + err);
            return;
        }
        bucket = new AWS.S3({
            params: {
                Bucket: AWS_S3_BUCKET_NAME
            }
        });
        oktaLoginContainer.style.display = 'none';
        uploadDialog.style.display = 'block';
        listObjs();
    });