模拟IDP SSO到阿里云
增加了一个简易版的SAML SP的java实现,地址在这里
前言
基本上是各大云产商的SSO都默认支持SAML协议. 但是由于配置比较复杂,很多人第一次接触的时候都是觉得比较难以理解.前段时间由于工作需要写了个支持saml协议的简易IDP.下面就来介绍一下怎么使用简易的IDP SSO到阿里云
代码
我已经把代码放到Github上: https://github.com/ichengchao/hellosaml ,这个代码本身非常简单,使用了springboot.
- 监听端口: 8080
- 启动类:
name.chengchao.hellosaml.MyApplication.main
- 配置类:
name.chengchao.hellosaml.common.CommonConstants
- URL配置:
name.chengchao.hellosaml.controller.SampleController
提供两个功能,分别是:
- SSO 模拟登陆: http://localhost:8080/login
- 下载meta.xml文件: http://localhost:8080/metaxml
实操
生成证书
1 | create the keypair |
完成后会生成3个文件:
- saml.crt
- saml.pem
- saml.pkcs8
修改name.chengchao.hellosaml.common.CommonConstants
- PUBLIC_KEY_PATH配置成saml.crt的文件的绝对路径,比如:
/Users/charles/test/saml.crt
- PRIVATE_KEY_PATH配置成saml.pkcs8的文件的绝对路径,比如:
/Users/charles/test/saml.pkcs8
配置阿里云
启动hellosaml应用,保存http://localhost:8080/metaxml的内容到meta.xml
登录阿里云RAM控制台 ,在角色SSO的tab页新增一个身份提供商
取一个名字比如superAD
,将保存的meta.xml上传上去. 接着在切换到RAM角色管理的页面,创建一个RAM角色.假设叫super2
类型选择身份供应商
接着给这个RAM角色授权,简单点的话可以直接选取一个系统内置的权限,比如AdministratorAccess.
到这里,阿里云侧的配置就全部完成了,还是非常简单的.
调试
修改name.chengchao.hellosaml.common.CommonConstants
将ROLE_LIST按照一下格式配置
1 | acs:ram::{uid}:role/{rolename},acs:ram::{uid}:saml-provider/{idp_provider_name} |
完成后,再次启动应用,访问http://localhost:8080/login 就能SSO到阿里云了.