javasaml2.0的简单介绍

博主:adminadmin 2022-12-28 00:03:05 70

今天给各位分享javasaml2.0的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

SAML2.0入门指南

SAML在单点登录中大有用处:在 SAML 协议中,一旦用户身份被主网站(身份鉴别服务器,Identity Provider, IDP )认证过后,该用户再去访问其他在主站注册过的应用(服务提供者,Service Providers, SP )时,都可以直接登录,而不用再输入身份和口令。

SAML本身是一个很复杂的协议,这里只选取最重要的部分为大家讲解,更多细节请见 官方文档 ,后续的文章也会进一步解析。

SP向IDP发出SAML身份认证请求消息,来请求IDP鉴别用户身份;IDP向用户索要用户名和口令,并验证其是否正确,如果验证无误,则向SP返回SAML身份认证应答,表示该用户已经登录成功了,此外应答中里还包括一些额外的信息,来却确保应答被篡改和伪造。

下面我们以用户登录SP,SP向IDP发起请求来确认用户身份为例子,看看SAML的工作流程。比如SP是Google的Apps,IDP是一所大学的身份服务器,Alice是该大学的一名学生。

现在Alice要通过浏览器查阅她的邮件,Alice一般会通过浏览器访问一个网页,比如 (step1)。因为这是个联合身份域,所以Google不会向用户索要用户名和密码,而是将其从定向到IDP来认证其身份(step3)。用户被重定向的URL类似于这种:

嵌入到HTTP请求中的 SAMLRequest 就是SAML认证请求消息。因为SAML是基于XML的(通常比较长),完整认证请求消息要经过压缩(为Url节省空间)和编码(防止特殊字符)才能传输。在压缩和编码之前,SAML消息有如下格式:

上面的内容用最直白的方式解释出来就是:这个来自Google的请求,请验证当前用户的身份,并将结果返回。

当IDP收到消息并确认要接受认证请求之后,就会要求Alice输入用户名和口令来验证其身份(如果Alice已经登录过了,就会跳过该步骤);当验证通过之后,Alice的浏览器将会跳转回Google的特定页面(AssertionConsumerService,简称ACS,step6)。同样,SAML身份认证响应的内容也是在压缩并编码后以参数的形式传输。在压缩和编码之前,其结构类如下:

虽然内容很多,但是其主要表达的是:该消息来自idp.uni.nl,名为Alice用户的身份已经被我验证,该消息的有效期为2分钟。此外,重定向的URL中还要有该消息的签名以保证其不备篡改,验证签名的公钥和算法,都是IDP和SP提前协商好的。

当Google接受到SAML认证响应之后,会首先验证消息的签名是否正确(step7)以及是否因超时而失效。然后再从认证消息中提取出Google能识别用户身份(NameID,即Alice),如果以上的步骤都是顺利的,用户将会成功登陆Google(Step8)。

为了便于解释,以上例子中的信息都保持了可读性,如果想要去看看真实的SAML信息,建议推荐使用火狐浏览器的插件工具 SAML tracer 。该插件将会在浏览器中添加一个窗口来显示SAML消息,以下是截图:

希望以上的内容能帮助你理解SAML协议。SAML协议的内容十分复杂,但是涉及到单点登录的内容都是以上述内容为基础的。

更多关于SAML协议的是实现的内容,请参见本人编写的一系列教程文章来介绍如何使用OpenSAML,欢迎阅读指正:

支持SAML2.0的 JAVA开源框架,要免费版的

你在哪里买的,到13.38国王,我提车,上周为130,800,聊了很久。

车企以及税收,也没有关系,被赋予了好车。就是你买的车一块钱。

2.0AT雅的产品仍然要支付12300。

saml2.0(主要是idp端开发)

附上大佬文章:

看了大佬的文章和demo基本能搞出来一套本地可用的saml2.0。

在我开发过程中主要是我们作为IDP,做统一登录后发送给第三方SP做免登录。

主要就几个过程:

1.SP通过发送SAML AuthnRequest到IDP,来请求鉴别用户身份

2.IDP验证身份,然后通过SAML产物响应(SAML Artifact Response)发送回SP

其中几个点:

1.记得初始化SAML,否则会出现NPE

2.如果有需要POST请求,可通过简单form表单自动提交

3.responseValue是response的base64加密

4.opensaml 3 默认加密算法是sha256,如果需要sha1可能需要降低到opensaml 2

5.opensaml 3 采用的是分开打包maven的方式,需要引入很多个模块,参考大佬文章,opensaml 2 是整体maven直接引入即可。例如:

6.断言可以对assertion做,也可以对整个response做签名。根据需要自选。

这个签名主要是idp端用证书私钥做签名,sp端用公钥做验签。

我采用的是pfx的方式,把文件流读入,然后获取私钥,公钥。做签名

demo两个:

opensaml 3.2.0

opensaml 2.2.3

关于javasaml2.0和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-28,除非注明,否则均为首码项目网原创文章,转载请注明出处。