使用 Amazon Cognito 访问 AWS Iot 时出现禁止异常

2024-02-04

我正在创建一个使用 Amazon Cognito 身份验证连接到 AWS IoT 的 Android 应用程序。我能够成功验证用户身份并且能够获取凭据。 使用这些凭据更新事物影子时始终返回 403 禁止异常。我已尝试了所有方法来解决该问题,但没有找到解决方案。

我的 IAM 政策是:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetThingShadow",
                "iot:UpdateThingShadow",

            ],
            "Resource": [
               "arn:aws:iot:us-west-2:<my_account>:thing/mythingname"
            ]
        }
    ]
}

连接端点的Android代码:

userSession= AppHelper.getCurrSession();
credentialsProvider=new CognitoCachingCredentialsProvider(getApplicationContext(),POOL_ID,REGIONS);

    Map<String,String> logins=new HashMap<String, String>();
    logins.put("cognito-idp.us-west-2.amazonaws.com/user_pool_id",userSession.getIdToken().getJWTToken());

    credentialsProvider.setLogins(logins);
    iotDataClient=new AWSIotDataClient(credentialsProvider);

    iotDataClient.setEndpoint(ENDPOINT);

更新事物影子:

 UpdateThingShadowRequest request=new UpdateThingShadowRequest();
            request.setThingName(thingName);

            ByteBuffer payloadBuffer=ByteBuffer.wrap(updateState.getBytes());
            request.setPayload(payloadBuffer);

            UpdateThingShadowResult result=iotDataClient.updateThingShadow(request);

任何有关这方面的帮助将不胜感激。


我和你有同样的问题。我找到了解决方案。

403 状态代码意味着您需要授权。

如果您阅读本文档(接近结尾):发布/订阅策略示例 http://docs.aws.amazon.com/iot/latest/developerguide/pub-sub-policy.html据说你需要2 政策使其与经过身份验证的 Cognito 用户一起使用。一个用于 Cognito 身份池,另一个用于 Cognito 用户。

无法使用 UI 将策略附加到 cognito 用户,但您可以通过 CLI 来完成此操作。

将策略附加到认知用户的命令是:

aws iot attach-principal-policy --principal "cognito user id" --policy-Name "policy name"

您可以找到您的认知用户 ID in :

Cognito > Manager Federated Identities > choose your identity pool > identity browser > and find your identity ID

我将此策略用于测试目的。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:*"
            ],
            "Resource": [
                "*"
            ]
        }
     ]
 }

为了使其可重用,您需要使用 lambda 函数(此处为 JavaScript)。

var AWS = require('aws-sdk');
var iot = new AWS.Iot();

exports.handler = function(event, context, cb) {
    var params = {
        policyName: 'your policy',
        principal: 'your cognito id'
    };

    var out = iot.attachPrincipalPolicy(params, function(err, data) {
        if (err) cb(err);
        else cb(null, data); 
    });
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Amazon Cognito 访问 AWS Iot 时出现禁止异常 的相关文章

  • 如何将 AWS Cognito 本机用户链接到联合用户

    现在Cognito 允许 https docs aws amazon com cognito user identity pools latest APIReference API AdminLinkProviderForUser html
  • 使用 dpi 与 dp 缩放图像之间的差异

    我拥有所有由九个补丁位图组成的 dpi 可绘制目录 xxhdpi 和 xxxhdpi 是否必要 可绘制目录中的可绘制资源文件可检索所有缩放的位图 并且我使用可绘制资源文件 现在 我的问题是我还根据大小 小 正常等 创建了 缩放 布局目录 其
  • 从历史堆栈中删除活动

    我的应用程序在用户第一次运行应用程序时显示注册活动 如下所示 活动启动画面 欢迎来到游戏 注册帐户 ActivitySplashScreenSignUp 很好 填写此信息 ActivityGameMain 游戏主屏幕 因此 当用户单击每个屏
  • API29 上不推荐使用 setColorFilter

    我使用以下行来更改 VectorDrawable 的颜色 mydrawable getBackground setColorFilter color PorterDuff Mode SRC ATOP 这很好用 尽管它现在已被弃用 文档建议我
  • 如何访问android库项目中的资源

    我正在构建一个 android 库项目 它内部需要一些静态资源 图像 xml 等 然后我想知道我可以把这些资源放在哪里以及如何访问它们 既然我把资源放到了assets文件夹 我使用 AssetManager 来访问资源 public cla
  • Android:我可以创建一个不是矩形的视图/画布吗?圆形的?

    我有一个圆形视图 悬停在主要内容上方 gt 从屏幕出来的 z 轴方向 当有人点击屏幕时 我希望选择主要内容或悬停在上方的视图 当它覆盖主视图时 到目前为止效果很好 我在透明画布上有一个圆形物品 这意味着您可以看到该圆圈之外的背景的所有内容
  • 如何在活动中的必填字段中显示 * 符号

    我需要在活动中的必填字段中显示 符号 你能建议我怎样才能做到这一点吗 任何帮助 将不胜感激 我想说 作为必填字段的标记不遵循本机 Android 主题 的组合setHint and setError对于 Android 应用程序来说看起来更
  • 更改卡片高度即更改 Jetpack 中与 Material 3 组合的卡片颜色

    我正在使用 Card 可组合项 我希望它的颜色为白色 但是当我向它添加一些高度时 它的颜色会更改为更像主要容器颜色 我看过文档 其中有一种称为高程覆盖的东西 但找不到说明如何使用它的示例 这是我的代码 Card modifier Modif
  • onScale 事件后触发奇怪的 onScroll 事件

    我有一个同时使用 SimpleOnScaleGestureListener 和 SimpleOnGestureListener 的应用程序 每当我进行捏缩放时 我都会得到预期的 onScale 但是当我抬起时 我会看到一个奇怪的 onScr
  • 不变违规:requireNativeComponent:在 UIManager 中找不到“RNSVGSvgViewAndroid”

    我对标题中提到的错误感到头疼 我正在使用react native gifted charts https www npmjs com package react native gifted charts v 1 0 3 https www
  • Android:如何使用后台线程?

    我开发了一个应用程序 它从互联网获取内容并相应地在设备的屏幕上显示它 该程序运行得很好 就是有点慢 加载并显示内容大约需要 3 4 秒 我想将获取内容并将其显示在后台线程中的所有代码放在一起 当程序执行这些功能时 我想显示一个进度对话框 你
  • 使用 HttpUrlConnection Android 将 base64 编码的图像发送到服务器

    我正在尝试使用 HttpUrlConnection 将 base64 编码的图像发送到服务器 我遇到的问题是大多数图像均已成功发送 但有些图像会生成 FileNotFound 异常 我的图像编码代码可以在下面找到 public static
  • 使用 Android Firebase 堆栈推送通知

    我开发了使用 Firebase 接收推送通知的 Android 应用程序 我的代码基于 Firebase Google 官方文档 https firebase google com docs cloud messaging android
  • Android:使 Dialog 周围的所有内容都比默认值更暗

    我有一个具有以下样式的自定义对话框 它显示了一个无边框对话框 后面的任何内容都会 稍微 变暗 我的设计师希望背后的一切都比 Android 的默认设置更暗 但不是完全黑色 有这样的设置吗 我能想到的唯一解决方法是使用全屏活动而不是对话框 只
  • android中listview显示数据库中的数据

    我是安卓新手 我想知道如何在列表视图中显示数据库中的数据 它不会向数据库添加数据 我只是显示我们存储在数据库中的任何内容 请帮助我实现这一目标 提前致谢 使用这些课程可能会对您有所帮助 用于数据库创建 package com example
  • TextInputLayout 对于在 EditText 中以编程方式给出提示没有效果

    我有一个 EditText 它的父级是 TextInputLayout 我试图以编程方式为 EditText 提供提示 不在布局中 在这种情况下 文本输入提示动画不起作用 它像简单的 EditText 一样工作 有人可以建议如何处理它吗 下
  • SDK >=26 仍需要 mipmap/ic_launcher.png?

    在 Android 中 有两种指定启动器图标 可以说是应用程序图标 的方法 老 方式 在 mipmap 文件夹中指定不同的 png 文件 通常命名为 ic launcher png 但可以通过以下方式设置名称android icon mip
  • 在android中创建SQLite数据库

    我想在我的应用程序中创建一个 SQLite 数据库 其中包含三个表 我将向表中添加数据并稍后使用它们 但我喜欢保留数据库 就好像第一次安装应用程序时它会检查数据库是否存在 如果存在则更新它 否则如果不存在则创建一个新数据库 此外 我正在制作
  • 使用 DataBindingComponent 的 Inflate 方法

    当 Glide 成功渲染图像后 我在更新文本视图时看到此错误 致命异常 java lang IllegalStateException 必需 CustomBinding 类中的 DataBindingComponent 为 null 绑定适
  • 如何正确编写AttributeSet的XML?

    我想创建一个面板适用于 Android 平台的其他小部件 http code google com p android misc widgets 在运行时 XmlPullParser parser getResources getXml R

随机推荐

  • JOOQ Oracle 数字精度和 Java 数字映射

    谁能告诉我或提供关于 oracle 数字精度和 java 类型之间映射的参考 即数字 x 在什么时候映射到短整型 整型 长型 BigInteger 等 Java 整数类型与 Oracle 并不完美匹配NUMBER类型 本质上 有两种方法可以
  • 为什么选择 Phing/Ant 而不是 Bash 和 Make? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我一直在工作中使用 Phing 它是我到达那里时设置的 并考虑将它用于一些个人项目 我还没有弄清楚的一件事是最大的吸引力是什么 Phing 或
  • Swift - Google 地图更新当前位置的路线

    我目前正在学习 Swift 的 Google Maps API 因此我有几个问题希望你们能回答 碰巧我正在尝试创建一个简单地为用户提供方向的应用程序 就像苹果地图和谷歌地图一样 它只是为用户绘制一条方向路线 我已经成功地完成了这项工作 但我
  • 布尔运算符的差异:& 与 && 和 |与||

    我知道规则 and 但什么是 and 请用例子向我解释这些 这些是按位 AND 和按位 OR 运算符 int a 6 110 int b 4 100 Bitwise AND int c a b 110 100 100 Bitwise OR
  • 提取 pandas 数据框中的嵌套 JSON

    我正在尝试在以下 pandas 数据框中解压嵌套的 JSON id info 0 0 u a u good u b u type1 u a u bad u b u type2 1 1 u a u bad u b u type1 u a u
  • 访问集合中的唯一元素[重复]

    这个问题在这里已经有答案了 我有一个set在Python中 我根据条件一一删除元素 当集合只剩下 1 个元素时 我需要返回该元素 如何从集合中访问该元素 一个简化的例子 S set range 5 for i in range 4 S S
  • CAP定理是否意味着ACID对于分布式数据库是不可能的?

    有NoSQL ACID 分布式 数据库 https stackoverflow com questions 2608103 is there any nosql that is acid compliant 尽管有 CAP 定理 这怎么可能
  • 警告:库类 android.net.http.AndroidHttpClient 扩展或实现程序类 org.apache.http.client.HttpClient

    我在导出 Android 应用程序时从 proguard 收到这些奇怪的错误 我已经编辑了配置文件 但我找不到剩下的错误是什么 我已经添加了外部 Jars 配置了 dontwarn 现在我找不到剩下的问题 2013 11 22 17 13
  • 房间持久性:实体和 Pojo 必须有一个可用的公共构造函数

    我正在尝试通过 Room Persistence 库向我的 Android 应用程序添加数据库 但收到此错误 错误 实体和 Pojo 必须有一个可用的公共构造函数 您可以有一个空构造函数 也可以有一个参数与字段匹配 按名称和类型 的构造函数
  • 方向更改时保留软输入/IME 状态

    我的应用程序中遇到了一个小的用户体验问题 当软键盘打开时从横向更改为纵向 或纵向更改为横向 时 键盘会隐藏 我想要做的是停止键盘在方向改变时隐藏 Edit 我不想强制打开键盘 如果键盘在方向更改之前被隐藏 我希望它保持隐藏状态 我想reta
  • 将一个文件夹中的所有文件移动到另一个文件夹中?

    当我将一个文件从一个位置移动到另一个位置时 rename path filename newpath filename 如何将一个文件夹中的所有文件移动到另一个文件夹中 尝试了这个没有结果 rename path newpath 一个稍微冗
  • 如何从 JavaScript 调用 REST API

    我有一个提供 json 数据的网址 我想从 javascript 访问该 URL 但收到此错误 纯文本文档的字符编码未声明 如果文档包含 US ASCII 范围之外的字符 则在某些浏览器配置中 该文档将呈现为乱码 文件的字符编码需要在传输协
  • 如果满足条件,则将元素与列表中的下一个元素连接

    我正在使用斯坦福自然语言处理将文本分割成句子 但它忽略了收缩 这是我得到的句子的一个例子 List I d like to fix this sentence because it s broken 我的目标是连接缩写词 使结果如下所示 L
  • 如何在sparklyr中按3分钟时间戳聚合数据?

    我在用sparklyr进行一些快速分析 我在使用时间戳时确实遇到一些问题 我有两个不同的数据帧 一个以 1 分钟间隔行 另一个以 3 分钟间隔行 第一个数据集 1 分钟间隔 id timefrom timeto value 10 2017
  • 使用 jQuery 验证在单独的 div 中显示错误消息

    我正在使用 jQuery 验证 我想在 div 中显示错误消息 div class alert alert error 默认显示在表单下方的功能不适用于我的表单设计 验证脚本链接到我有表单的页面 它看起来像 function validat
  • 取消选择变量时,条形图“飞翔”

    我面临着 ggplot2 和plotly 的一些问题 使用 ggplot2 创建条形图并将其传递给函数时ggplotly取消选择变量时 条形图位于半空中 该图的表现与示例不同here https plot ly r bar charts 例
  • 多个 jediepcserver.py 用于多个 virtualenv

    我正在尝试为不同项目的多个 virtualenv 运行多个 jediepcserver py 我的想法是让我在 Emacs 上工作的每个项目都有适当的自动完成功能 例如 我目前正在开发两个项目 一个使用 Django 1 5 另一个使用 D
  • .Net AssemblyName.version 构建与修订

    MSDN 文档指出 版本号由二到四个组成 组件 主要 次要 构建和 修订 主要和次要 需要组件 构建和 修订组件是可选的 但是 构建组件是必需的 如果 修订版组件已定义 全部 定义的分量必须是整数 大于或等于0 版本号的格式如下 如下 显示
  • 从Python API而不是saved_model_cli中提取(或设置)输入/输出TF张量名称信息

    我使用 Keras TF2 5 训练了一个简单的模型并将其保存为已保存模型 tf saved model save my model path to model 如果我通过检查它 saved model cli show dir path
  • 使用 Amazon Cognito 访问 AWS Iot 时出现禁止异常

    我正在创建一个使用 Amazon Cognito 身份验证连接到 AWS IoT 的 Android 应用程序 我能够成功验证用户身份并且能够获取凭据 使用这些凭据更新事物影子时始终返回 403 禁止异常 我已尝试了所有方法来解决该问题 但