目录

正常解决

笔者遇到情况

原因

解决办法

小结


首先声明,这个报错产生的情况是,在集成完单点登录后,通过生产链接访问系统,在此之前会跳转到一个用于单点登录的界面,类似于这样:

在属于用户名密码后,如果通过了这个okta平台下的验证,会通过url跳转到我们真正的生产系统。

这是正常流程,至于为什么会报SAMLException的错误呢?

正常解决

有2个原因,一个就是正常原因,也就是Idp验证服务器请求我们生产的Sp服务提供者超时,xml配置解决方法如下:

<bean class="org.opensaml.saml2.metadata.provider.ResourceBackedMetadataProvider"><constructor-arg><bean class="java.util.Timer"/></constructor-arg><constructor-arg><bean class="org.opensaml.util.resource.ClasspathResource"><constructor-arg value="/metadata/idp.xml"/></bean></constructor-arg><property name="parserPool" ref="parserPool"/><property name="minRefreshDelay" value="120000"/><property name="maxRefreshDelay" value="300000"/>
</bean>

其原理就是把配置在IOC容器中的ResourceBackedMetadataProvider的超时属性:minRefreshDelay、maxRefreshDelay重新设置下。

太老了,现在注解版本一般这么用:

 @Beanpublic ExtendedMetadataDelegate idpMetadataLoader() {if (StringUtils.isBlank(samlProperties.getIdpXml()) || !samlProperties.getIdpXml().endsWith(".xml")) {throw new IllegalArgumentException("demo.saml.idp-xml must not be null or empty and must be a xml file.");}try {final File file = ResourceUtils.getFile(samlProperties.getIdpXml());Resource idpResource = new FilesystemResource(file.getPath());Timer refreshTimer = new Timer(true);ResourceBackedMetadataProvider delegate;delegate = new ResourceBackedMetadataProvider(refreshTimer, idpResource);delegate.setMinRefreshDelay(120000);delegate.setMaxRefreshDelay(300000);delegate.setParserPool(parserPool());ExtendedMetadata extendedMetadata = extendedMetadata().clone();ExtendedMetadataDelegate provider = new ExtendedMetadataDelegate(delegate, extendedMetadata);provider.setMetadataTrustCheck(true);provider.setMetadataRequireSignature(false);String idpName = file.getName().replaceAll(".xml", "");extendedMetadata.setAlias(idpName);// 配置 IDP 元数据的 providerLOGGER.info("Loaded Idp Metadata bean {}: {}", idpName, file.getPath());return provider;} catch (Exception e) {throw new IllegalStateException("Unable to initialize IDP Metadata", e);}}

笔者遇到情况

笔者遇到的情况,稍微特殊点,其实正常来说一般也不会出现超时错误,笔者的情况是,测试和生产服务器都配置在了例如okta的生产环境下。

这样就会造成一个问题,他们都可以过单点登录界面,但是笔者这边用户遇到的情况是一输入生产地址,就算通过了单点登录验证,后面会直接报401错误,后台报错就和标题显示一样SAMLException。

原因

其实这个主要和笔者的配置有关系,主要就是测试和生产服务器都配置在了一个okta环境下,如果先登录了测试地址,是没问题,可以正常访问,但是登录了测试再登录生产,就会出现如题报错。

解决办法

清空浏览器缓存,直接输入生产地址,访问即可。

小结

究其原因,主要还是测试和生产服务器都配置在了一套环境,然后这个环境中其实可以设置不同的Application,这样的话,测试与生产变会产生同又不同的变化,同的是单点登录他们都可以进去。

不同的是,进去后不同的环境与okta的Idp服务器交互产生的token其实是不一样的,你用测试的token去进生产,不就报401错了嘛。

org.opensaml.common.SAMLException: Response issue time is either too old or with date in the future相关推荐

  1. java saml_Java使用OpenSAML创建一个SAML Assertion(二)

    参数资料: OpenSAML官方 需要Jar包:xalan.jar (2.7.1), xercesImpl.jar, xml-apis.jar,opensaml-1.1.jar, xmlsec-200 ...

  2. ASP.NET MVC:4 Ways To Prevent Duplicate Form Submission(转载)

    原文地址:http://technoesis.net/prevent-double-form-submission/. Double form submission in a multi-user w ...

  3. NEO versus Ethereum: Why NEO might be 2018’s strongest cryptocurrency

    NEO is a platform with a purpose. Can it compete with Ethereum? Or better yet, does it even need to? ...

  4. NSS 错误码详细信息

    Table 8.1 Error codes defined in sslerr.h SSL_ERROR_EXPORT_ONLY_SERVER -12288 "Unable to commun ...

  5. openvswitch 2.3.1 配置详解

    <?xml version="1.0" encoding="utf-8"?> <database title="Open vSwit ...

  6. 徒手撸框架--实现 RPC 远程调用

    微服务,已经是每个互联网开发者必须掌握的一项技术.而 RPC 框架,是构成微服务最重要的组成部分之一.趁最近有时间.又看了看 dubbo 的源码.dubbo 为了做到灵活和解耦,使用了大量的设计模式和 ...

  7. 要离校了,使用SSM为学校开发后勤报修系统

    项目编号:BS-XX-006 本系统基于SSM实现后勤报修管理功能,前端采用DIV+CSS布局处理,采用异步请求AJAX发送请求和接受消息,数据库采用MYSQL,开发工具使用IDEA或ECLIPSE, ...

  8. rocketmq还要eventbus_ListEventBuses_ListEventBuses_事件总线_C# SDK_阿里云SDK参考_事件总线EventBridge - 阿里云...

    示例代码如下:using System; using System.Collections.Generic; using Tea; namespace Alibabacloud.Sample { pu ...

  9. Tomcat vs. Jetty vs. Undertow: Comparison of Spring Boot Embedded Servlet Containers

    原文地址:https://examples.javacodegeeks.com/enterprise-java/spring/tomcat-vs-jetty-vs-undertow-compariso ...

最新文章

  1. 多个PHP版本环境搭建(nginx,php)
  2. runtime 项目实战方法处理
  3. 使用 AjaxManager 生成调用服务器端方法的 javascript 函数
  4. Android-gradle插件调试
  5. 爆款入门 | 第 14 期微生物组-扩增子16S分析和可视化(线上/线下同时开课,2022.4)...
  6. java swt 布局_Java开发网 - 基于SWT的类XUL实现: SWT-XUI
  7. putty秘钥转换成xhell支持的格式
  8. 【C++】演讲比赛流程管理系统
  9. Linux 运维之道笔记-第一章
  10. python--------集合练习题(问卷的调查)
  11. tunnelbroker_通过OPNSense上的TunnelBroker进行IPv6
  12. java结业作业_学习平台-北语201606考试批次《JAVA语言程序设计》(结课作业)答案-成人高等教育_成人本科教育报名_远程网络教育学院-江苏学历网报名服务中心...
  13. 本地使用Idea创建SpringBoot项目并给gitee托管
  14. Android字体加粗的几种样式
  15. 超级实用(附技巧)——用word与谷歌翻译将英文PDF文档翻译成中文,免费无限制
  16. 北京地铁背景音乐曲目
  17. 永远不要去依赖别人_经典语录:不要轻易去依赖一个人,它会成为你的习惯
  18. 128MB 大页2KBNand Flash读写驱动---K9F1G08U0B
  19. 【echarts】24、highchart+vue2 - 3D饼图
  20. Android ListView局部刷新item

热门文章

  1. lammps问题-关于NVT与NVE系综产生的不同
  2. 网易云课堂-微专业-深度学习工程师-学习记录
  3. intouch制作历史报警查询(时间查询,筛选关键字)
  4. mediasoup create/connect WebRtcTransport 流程分析
  5. 唱吧php文件在哪,唱吧录的歌在哪个文件夹 唱吧本地录音怎么导出
  6. 360度相机(全景图片)中的卷积(一):Equirectangular Convolutions
  7. 使用服务器-宝塔面板搭建发卡网(包括支付接口)
  8. chatgpt训练自己的数据python版
  9. 大数据——Hive基础
  10. 广告配音自己应该怎么制作?