博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WildFly AS 10中基于PicketLink的SAML SSO实现
阅读量:4177 次
发布时间:2019-05-26

本文共 3265 字,大约阅读时间需要 10 分钟。

PicketLink是一个开源的安全框架(不便于集成,需要二次开发),为Java EE应用提供安全(认证、授权、权限访问API)和IDM方案。在WildFly AS 10中,默认已经提供了对PicketLink 2.5.5.SP1的集成。

基于PicketLink,可以在WildFly AS 10中实现兼容SAML标准的SSO。

1.基于SAML的SSO概述

1)SSO中的几个概念

Service Provider (SP)就是部署在应用服务器上的各个应用。

IdentityProvider (IdP),负责对SP的访问请求进行身份验证。

2)SP发起的SSO处理过程

a.用户请求访问SP(就是一个普通的Web应用)

b.SP代理检查用户请求的授权,如果用户还没有被认证则将请求重定向到IdP
c.IdP给出登录页面,用户输入认证信息
d.IdP查询数据库,检查用户输入的有效性
e.如果用户有效,IdP为该用户创建一个会话,并签发一个SAML Assertion 
f.IdP将带有SAML Assertion 和用户信息的用户请求返回给SP
g.SP检查SAML Assertion 确认用户有效
h.SP检查用户的权限,授权用户访问应用

2.基于PicketLink的IdP(Identity Provider)应用的配置

IdP也是一个Web应用,集中负责对用户信息的认证并签发SAMLAssertion 。

SAML Assertion 就是IdP认证后为用户签发的一个信息集合,这些信息是从用户识别数据库(如LDAP或数据库等)中获取的。SAMLAssertion 用于SP对用户的鉴权。

IdP的配置如下:

1)     在WEB-INF/web.xml中,设置安全约束和登录配置

Manager command
/*
manager
Sales
Employee
FORM
PicketLink IDP Application
/jsp/login.jsp
/jsp/login-error.jsp

注意,安全约束中,采用了基于角色的访问限制;用户的认证,采用了基于FORM的认证。

这样,未经认证的用户,其请求将总是被传递信息到登录配置的页面。

 

2)     在WildFly AS 10的启动配置文件${JBOSS_HOME}/standalone/configuration/standalone-full.xml中,设置安全域

注意,这里设置的安全域采用了两个属性文件,它们位于WEB-INF/classes/。事实上,应该使用LDAP或数据库保存用户和角色信息。

 

3)     IdP为了引用服务器提供的安全域,在WEB-INF/jboss-web.xml中引用安全域

idp

至此,IdP能够对用户进行认证。

但是具体的认证过程,是由PicketLinkAuthenticator完成的。PicketLinkAuthenticator是PicketLink提供的一个组件,专门用于处理SAML消息。

4)     在WildFly AS 10中,为了启动对应的PicketLinkAuthenticator,需要在WEB-INF/web.xml中配置过滤器

IDPFilter
org.picketlink.identity.federation.web.filters.IDPFilter
IDPFilter
/*

5)     在WEB-INF/picketlink.xml中,配置IdP的参数

${idp.url::http://localhost:8080/idp/}
localhost,jboss.com,jboss.org,viavi.com

6)     在META-INF/jboss-deployment-structure.xml中,设置IdP部署时对的依赖

3.基于PicketLink的SP(Service Provider)应用的配置

SP也是一个Web应用,提供一定的业务功能。SP依赖于IdP签发的以对用户进行鉴权。

集中负责对用户信息的认证并签发SAMLAssertion 。

SP的配置过程如下:

1)     在WEB-INF/web.xml中,设置安全约束和登录配置

Manager command
/*
manager

注意,安全约束中,采用了基于角色的访问限制,只有manager角色能够访问该SP。

 

2)     在WildFly AS 10的启动配置文件${JBOSS_HOME}/standalone/configuration/standalone-full.xml中,设置安全域

3)     SP为了引用服务器提供的安全域,在WEB-INF/jboss-web.xml中引用安全域

sp

至此,SP能够对用户进行鉴权。

 

4)     在WildFly AS 10中,为了启动对应的PicketLinkAuthenticator,需要为SP创建/WEB-INF/classes/META-INF/services/io.undertow.servlet.ServletExtension文件,文件内容如下

org.picketlink.identity.federation.bindings.wildfly.sp.SPServletExtension

5)     在WEB-INF/picketlink.xml中,配置SP的参数

${idp.url::http://localhost:8080/idp/}
${sales-post.url::http://localhost:8080/sales-post/}

6)     在META-INF/jboss-deployment-structure.xml中,设置IdP部署时对的依赖

参考文献:

PicketLink Quickstarts源代码

PicketLink SSO

转载地址:http://djlai.baihongyu.com/

你可能感兴趣的文章
Spring3.0包的详解
查看>>
Cookie详解
查看>>
采用tomcat插件运行maven聚合工程报错
查看>>
linux环境下安装nginx
查看>>
浅谈Spring Cloud(微服务)
查看>>
启动三个版本的tomcat,但是启动那个都是固定一个版本
查看>>
java毕业2年如何做到月薪2万
查看>>
BAT架构师谈java
查看>>
淘宝技术这十年
查看>>
URL和URI的区别
查看>>
JS和java正则表达式详解
查看>>
Spring的核心和Bean的详解
查看>>
设计模式是什么
查看>>
接口型模式/接口和抽象类的区别/案例分析
查看>>
适配器模式
查看>>
MD5算法
查看>>
Vue项目的启动加载过程
查看>>
外观模式
查看>>
组合模式
查看>>
桥接模式
查看>>