步骤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可能是一个选择。