AWS SSO对接自定义SAML 2.0应用触发No access 403错误咨询
403报错根因分析
- 首要根因:你没有在AWS SSO控制台为当前登录的用户/用户组分配该自定义SAML应用的访问权限。AWS SSO对所有自定义应用默认关闭公开访问,未显式授权的用户触发应用访问请求时,平台会直接返回
com.amazonaws.switchboard.portal#ForbiddenException403错误。你在samltest.id平台测试正常,是因为该测试平台没有应用访问权限校验逻辑,SAML流程正确即可运行。 - 次要配置问题:你的Go服务实际监听端口为
8000,但SP根路径、元数据中的ACS/SLO地址全部指向9000端口,该问题不会触发当前AWS SSO平台返回的403,但会在权限配置完成后导致回调失败,需要同步修复。 - 其他可能校验失败原因:如果AWS SSO控制台中填写的
应用ACS URL、SAML受众(实体ID)和你上传的元数据对应值不完全匹配(包括后缀斜杠、大小写差异),也会触发SAML请求校验失败返回403。
解决步骤
- 配置应用访问权限
- 进入AWS SSO控制台,打开你创建的自定义SAML应用详情页
- 切换到「分配用户和组」标签页,点击「分配」按钮
- 选择你当前登录AWS SSO的用户或所属的用户组,确认完成分配
- 等待1-2分钟配置生效后,重新访问应用测试
- 修复端口配置不一致问题,二选一修改即可:
- 修改Go代码启动端口为9000:将
http.ListenAndServe(":8000", nil)改为http.ListenAndServe(":9000", nil) - 将SP根URL、元数据中的所有
9000端口替换为8000,重新上传元数据到AWS SSO
- 修改Go代码启动端口为9000:将
- 校验SAML配置一致性:进入AWS SSO应用的「SAML 2.0 配置」页,手动核对两个参数:
- 断言使用者服务(ACS)URL和元数据中
AssertionConsumerService的Location值完全一致 - SAML受众(实体ID)和元数据中
EntityDescriptor的entityID值完全一致
- 断言使用者服务(ACS)URL和元数据中
内容的提问来源于stack exchange,提问作者Matteo
相关产品推荐
相关产品推荐

