建设购物网站费用,徐州百度竞价排名,餐饮网站开发参考文献,设计制作的基本步骤是什么前言 本节的内容为JDBC认证#xff0c;查找数据库进行验证#xff0c;其中包括#xff1a; 密码加密策略#xff08;无密码#xff0c;简单加密#xff0c;加盐处理#xff09;认证策略#xff08;jdbc#xff09;一、业务需求 不同的公司#xff0c;需求业务需求或者…前言 本节的内容为JDBC认证查找数据库进行验证其中包括 密码加密策略无密码简单加密加盐处理认证策略jdbc一、业务需求 不同的公司需求业务需求或者架构不一样导致我们实现验证的方式不一样那么cas为我们提供了很多认证的模式当然也可以自定义其中常用的有 JDBC认证LDAP认证Basic认证Shiro认证Pac4j认证MongoDB认证Rest认证IP黑白名单还有可能交给第三方认证例如微信、QQ、新浪github等等 当然也有一些公司或者企业也非常的变态如 认证中心不能直接访问账号库cas也提供功能可以考虑用REST认证模块来处理这个事情老系统账号唯一性不确定例如 组织账号 才是唯一值这时候只能自定义认证器后面章节会有教程业务系统要求返回用户密码多属性返回二、加密方案 cas支持jdbc校验方案 根据sql给予用户名进行查询根据密码字段进行鉴定select * from table_users where username?可判断有效等通过盐等手段进行编码加密再进行匹配推荐根据sql给予用户名以及密码进行查询select count(x) from tables_users where username ? and password?不可判断有效期若数量大于0则成功根据用户名密码连接数据库原理是通过jdbc若连接成功则成功下文会讲述前两种的配置方法 常用单向加密算法MD5、SHA、HMAC 一般的加密策略的三种 单项加密算法(密码)单向加密算法(密码动态盐私有盐)*加密次数推荐不加密不推荐上述提到的加密方案策略下面都会一一说明白 三、Jdbc认证 3.1、创建数据库cas,新增一张用户表sys_user 说明 expired字段表示过期1表示已过期需要修改密码disabled表示账号是否禁用1表示禁用3.2、sys_user表数据 idusernamepasswordexpiredemaildisabled1admin845d5f1153c27beed29f4796404451480 12jackycaf1a3dfb505ffed0d024130f58c5cfa1 04zhangsan68053af2923e00204c3ca7c6a3150cf70 0说明 如果采用MD5加密那password就是MD5加密后的密文sha同样如此admin、jacky、zhangsan明文密码分别是xiaoxiao、321、7893.2、修改sso-server/pom.xml文件 ?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.carl.auth/groupIdartifactIdsso/artifactIdversion1.0.0/versionrelativePath../pom.xml/relativePath/parentartifactIdsso-server/artifactIdpackagingwar/packagingnamesso-server/namedescriptionCAS认证服务负责各系统的鉴权的鉴权/descriptiondependenciesdependencygroupIdorg.apereo.cas/groupIdartifactIdcas-server-webapp-tomcat/artifactIdversion${cas.version}/versiontypewar/typescoperuntime/scope/dependency!--新增支持jdbc验证--dependencygroupIdorg.apereo.cas/groupIdartifactIdcas-server-support-jdbc/artifactIdversion${cas.version}/version/dependency!--使用mysql驱动--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion${mysql.version}/version/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.apereo.cas/groupIdartifactIdcas-server-support-bom/artifactIdversion${cas.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdcom.rimerosolutions.maven.plugins/groupIdartifactIdwrapper-maven-plugin/artifactIdversion0.0.5/versionconfigurationverifyDownloadtrue/verifyDownloadchecksumAlgorithmMD5/checksumAlgorithm/configuration/pluginplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion${springboot.version}/versionconfigurationmainClassorg.springframework.boot.loader.WarLauncher/mainClassaddResourcestrue/addResources/configuration/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-war-plugin/artifactIdversion3.1.0/versionconfigurationwarNamecas/warNamefailOnMissingWebXmlfalse/failOnMissingWebXmlrecompressZippedFilesfalse/recompressZippedFilesarchivecompressfalse/compressmanifestFile${project.build.directory}/war/work/org.apereo.cas/cas-server-webapp-tomcat/META-INF/MANIFEST.MF/manifestFile/archiveoverlaysoverlaygroupIdorg.apereo.cas/groupIdartifactIdcas-server-webapp-tomcat/artifactId/overlay/overlays/configuration/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.3/version/plugin/pluginsfinalNamecas/finalName/build
/project 3.3、application.properties新增配置 #jdbc验证配置
#Query Database Authentication 数据库查询校验用户名开始
#查询账号密码sql必须包含密码字段
cas.authn.jdbc.query[0].sqlselect * from sys_user where username?
#指定上面的sql查询字段名必须
cas.authn.jdbc.query[0].fieldPasswordpassword
#指定过期字段1为过期若过期需要修改密码
cas.authn.jdbc.query[0].fieldExpiredexpired
#为不可用字段段1为不可用
cas.authn.jdbc.query[0].fieldDisableddisabled
#数据库方言hibernate的知识
cas.authn.jdbc.query[0].dialectorg.hibernate.dialect.MySQLDialect #数据库驱动 cas.authn.jdbc.query[0].driverClasscom.mysql.jdbc.Driver #数据库连接 cas.authn.jdbc.query[0].urljdbc:mysql://localhost:53306/cas?useUnicodetruecharacterEncodingUTF-8 #数据库用户名 cas.authn.jdbc.query[0].userroot #数据库密码cas.authn.jdbc.query[0].password123456 #默认加密策略通过encodingAlgorithm来指定算法默认NONE不加密 cas.authn.jdbc.query[0].passwordEncoder.typeDEFAULT cas.authn.jdbc.query[0].passwordEncoder.characterEncodingUTF-8 cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithmMD5 #Query Database Authentication 数据库查询校验用户名结束 #jdbc验证配置 以上配置如驱动查询数据库等等需要根据不同的场景进行调整 若密码无加密调整passwordEncoder.typeNONE若密码加密策略为SHA调整passwordEncoder.encodingAlgorithmSHA若算法为自定义实现org.springframework.security.crypto.password.PasswordEncoder接口并且把类名配置在passwordEncoder.type3.4、执行流程 例如输入admin/xiaoxiao 3.5、对密码进行盐值处理再加密application.properties配置文件修改 #Encode Database Authentication 开始
#加密次数
cas.authn.jdbc.encode[0].numberOfIterations2
#该列名的值可替代上面的值但对密码加密时必须取该值进行处理
cas.authn.jdbc.encode[0].numberOfIterationsFieldName
# 盐值固定列
cas.authn.jdbc.encode[0].saltFieldNameusername
#静态盐值
cas.authn.jdbc.encode[0].staticSalt.
cas.authn.jdbc.encode[0].sqlselect * from sys_user_encode where username?
#对处理盐值后的算法
cas.authn.jdbc.encode[0].algorithmNameMD5
cas.authn.jdbc.encode[0].passwordFieldNamepassword
cas.authn.jdbc.encode[0].expiredFieldNameexpired
cas.authn.jdbc.encode[0].disabledFieldNamedisabled
cas.authn.jdbc.encode[0].urljdbc:hsqldb:mem:cas-hsql-database
cas.authn.jdbc.encode[0].dialectjdbc:mysql://localhost:53306/cas?useUnicodetruecharacterEncodingUTF-8 cas.authn.jdbc.encode[0].userroot cas.authn.jdbc.encode[0].password123456 cas.authn.jdbc.encode[0].driverClasscom.mysql.jdbc.Driver#Encode Database Authentication 结束 4、验证 4.1、输入admin/xiaoxiao 4.2、输入、jacky/321 4.3、输入zhangsan/789 5、总结 pom.xm配置引入jdbc支持包和 数据库驱动包 application.properties增加数据连接配置和加密方式