首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection 问题处理

1.首先看到的报错信息org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; 怀疑是项目配置的链接数据库的地址或者用户名, 密码错误导致,后仔细核查数据库ip ,端口号,数据库用户名,密码均未发现异常。 2.考虑到1中未排查出异常,故继续往下找,发现javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target,查询了一下错误信息的意义,发现这个应该是缺少认证证书的问题,但是连接数据库并不是通过https连接,怎么会触发证书认证的情况?可以错误日志也没有再提供其他的方向了,这个时候跟程序发现报了mysql的08001的错误码,查询得知代表的是数据库连接时区配置问题,再次检查时区配置,并按社区小伙伴提供的时区配置后问题仍然没有解决。 3.基于2中缺少证书的问题,给自己的tomcat安装了认证证书,但是问题仍然存在 4.问题再次回到1,检查数据库连接,发现原来的数据库连接有参数userSSL=true,这个参数是过去到现在一直存在的,查询参数意义发现如果这个参数开启,需要应用端和服务端同时配置证书,查看mysql服务端

01

Hadoop Authentication

我被被派去做别的事情了,所以与Hadoop相关的工作就只能搁下。写篇总结,把最近遇到的和kerberos相关的东西列一下。 JAAS是Java 认证和授权服务(Java Authentication and Authorization Service)的缩写,是PAM框架的Java实现。 javax.sercurity.auth.Subject是一个不可继承的实体类,它表示单个实体的一组相关信息,与请求的来源相关。 javax.security.auth.Principal是一个接口,表示带有不同类型凭证的标识,基本上来说,Principal可以是任意对象。 JAAS的授权机制主要就是围绕着Subject和Principal。关于JAAS比较详细的参考是这里:http://docs.oracle.com/javase/6/docs/technotes/guides/security/jaas/JAASRefGuide.html 几个比较重要的java属性: java.security.krb5.realm java.security.krb5.kdc java.security.krb5.conf hadoop的身份认证和授权都是建立在JAAS之上。 hadoop.security.authentication属性有2种值: simple: Security is disabled。 kerberos: Security is enabled。 org.apache.hadoop.security.UserGroupInformation有一个静态方法:getCurrentUser()。它会返回一个UserGroupInformation类的实例(以下简称UGI)。如果subject为空,或者这个subject中与org.apache.hadoop.security.User对应的Principal为空,那么说明尚未登录过,调用getLoginUser()创建UserGroupInformation的实例。 getLoginUser()的流程: 1.创建LoginContext: name:如果hadoop.security.authentication等于”kerberos”,那么是“hadoop-user-kerberos”或者“hadoop-keytab-kerberos”,否则是“hadoop-simple”。它的主要作用是作为appName传递给UserGroupInformation.HadoopConfiguration.getAppConfigurationEntry(String appName)方法。 subject: callbackHandler: 空 Configuration: UserGroupInformation.HadoopConfiguration的实例。 2.login.login(); 这个会调用HadoopLoginModule的login()和commit()方法。 HadoopLoginModule的login()方法是一个空函数,只打印了一行调试日志 LOG.debug("hadoop login"); commit()方法负责把Principal添加到Subject中。 此时一个首要问题是username是什么? 在使用了kerberos的情况下,从javax.security.auth.kerberos.KerberosPrincipal的实例获取username。 在未使用kerberos的情况下,优先读取HADOOP_USER_NAME这个系统环境变量,如果不为空,那么拿它作username。否则,读取HADOOP_USER_NAME这个java环境变量。否则,从com.sun.security.auth.NTUserPrincipal或者com.sun.security.auth.UnixPrincipal的实例获取username。 如果以上尝试都失败,那么抛出异常LoginException("Can’t find user name")。 最终拿username构造org.apache.hadoop.security.User的实例添加到Subject中。 测试登录: HADOOP_JAAS_DEBUG=true HADOOP_ROOT_LOGGER=DEBUG,console  bin/hadoop  org.apache.hadoop.security.UserGroupInformation 其中,UGI应该是这样的形式: UGI: host/xx.xx.xx.com@xx.xx.com (auth:KERBEROS)

01

身份认证系统 JOSSO Single Sign-On 1.2 简介

背景知识:身份认证系统包括:目录服务,验证和授权服务,证书服务,单点登陆服务,系统管理等模块。          JOSSO 是一个纯Java基于J2EE的单点登陆验证框架,主要用来提供集中式的平台无关的用户验证。         JOSSO 主要特色: 1 100% Java,使用了 JAAS,WEB Services/SOAP,EJB, Struts, Servlet/JSP 标准技术; 2 基于JAAS的横跨多个应用程序和主机的单点登陆; 3 可插拔的设计框架允许实现多种验证规则和存储方案 ; 4 可以使用servlet和ejb Security API 提供针对web应用,ejb 的身份认证服务; 5 支持X.509 客户端证书的强验证模式; 6 使用反向代理模块可以创建多层的单点登陆认证,并且使用多种策略可在每层配置不同的验证模式; 7 支持数据库,LDAP ,XML等多种方式的存储用户信息和证书服务; 8 客户端提供php,asp 的API; 9 目前 JBoss 3.2.6 和 Jakarta Tomcat 5.0.27 以上版本支持。 10 基于BSD License。 JOSSO 主页     点评:          1、目前还没有提供.NET的客户端API,可能因为.net框架本身就有了很好的验证机制吧,但是单点登陆还是很有必要的特别是对于大型网站来说,更需要统一的用户登录管理。          2、不知道是否以后的版本会支持 活动目录 AD。     相关名词:          SAML:Security Assertion Markup Language

03
领券