Azure AD+SAML 实现 SSO单一登录

步骤1:创建企业应用程序

(1)登录地址:https://entra.microsoft.com/#home——》企业应用程序——》新建应用程序——》创建你自己的应用程序——》保存
(2)设置单一登录
(3)添加用户和组
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

步骤2:配置SSO单一登录信息

在这里插入图片描述
在这里插入图片描述
配置好以后,得到信息如下:
(1)标识符(实体 ID):https://localhost:8080/bueiness/xxx/secure/aad
(2)回复 URL (断言使用者服务 URL):http://localhost:8080/bueiness/xxx/graph/me
(3)证书(base64):下载下来
(4)登录 URL:https://login.microsoftonline.com/xxx2-47f0-41db-8cc5-596e488c7dc5/saml2
(5)Microsoft Entra 标识符:https://sts.windows.net/xxx02-47f0-41db-8cc5-596e488c7dc5/
(6)注销 URL:https://login.microsoftonline.com/xxx2-47f0-41db-8cc5-596e488c7dc5/saml2

把用户添加到“用户和组”里面,这样他才有权限访问这个企业应用程序
在这里插入图片描述

步骤3:java项目集成SAML库

添加依赖:将开源的SAML库比如OneLogin作为依赖项添加到java项目中。在Maven构建文件中添加相应的依赖项。
我们使用 onelogin 框架进行生成saml 请求 和解析结果
在这里插入图片描述
步骤4:配置SP和IDP
在这里插入图片描述
onelogin.saml2.sp.entityid = Entity ID

onelogin.saml2.sp.assertion_consumer_service.url = ACS URL

onelogin.saml2.sp.single_logout_service.url = Entity ID

onelogin.saml2.sp.x509cert = SP x509cert

onelogin.saml2.idp.entityid = Entity ID

onelogin.saml2.idp.single_sign_on_service.url = SingleSignOnService Redirect URL

onelogin.saml2.idp.single_logout_service.url = SingleLogoutService Redirect URL

步骤5:处理SAML请求和响应

(1)创建Saml2Filter
在这里插入图片描述
//2.SAML请求逻辑代码实现
Auth auth = new Auth(request, response);
auth.login();

//3.SAML响应逻辑代码实现
Auth auth = new Auth(request, response);
String nameId = auth.getNameId();
String nameIdFormat = auth.getNameIdFormat();
String sessionIndex = auth.getSessionIndex();
String nameidNameQualifier = auth.getNameIdNameQualifier();
String nameidSPNameQualifier = auth.getNameIdSPNameQualifier();

//4.登出逻辑代码实现
Auth auth = new Auth(request, response);
auth.logout();

有哪些开源的SAML库?

开源的SAML库:
(1)OneLogin Java SAML Toolkit
(2)OpenSAML
(3)Spring Security SAML

如果您希望获得易于集成和广泛社区支持的SAML 2.0库,OneLogin Java SAML Toolkit可能是一个合适的选择。

如果您正在考虑将来迁移到Spring Security或已经在项目中使用了Spring Security,那么Spring Security SAML可能是一个有吸引力的长期解决方案,尽管当前的集成工作可能会更复杂。
如果您需要底层的SAML协议支持并愿意投入更多的开发工作,OpenSAML可能是一个选择。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值