5 分钟部署一个 OAuth2 服务并对接 Shibboleth-IdP 3.4.6

5 分钟部署一个 OAuth2 服务并对接 Shibboleth-IdP 3.4.6,第1张

这还是一个标题党。

OAuth2 现在已经是开放授权协议的事实标准,你可以看到几乎所有的 xxx 开放平台均采取的 OAuth2 协议来进行授权。而在 Authorization Code 模式的基础上结合 JWT ,标准化的 userinfo endpoint 和服务发现,就成了 OpenID-Connect。当然即便不加上这些限定,OAuth2 在 Authorization Code 模式下,也通常被用作统一身份认证的解决方案提供给用户。而由于 OAuth2 与 CAS 不同,缺乏 Apereo CAS 这样的重量级产品来对标(话说回来,Apereo CAS 现在自己就支持 OAuth2 来着)。于是市场上的 OAuth2 实现可谓群魔乱舞,槽点一时难以穷尽。

个人建议,在选取 OAuth2 产品时,务必通过 oauth playground 进行测试,以验证协议实现的标准性,避免将来踩坑。而如果需要自己临时起一个 OAuth2 服务做测试的话嘛~~~

是的,搭一个 OAuth 服务器 5 分钟就够了。

是的,Apereo CAS 现在也支持 OAuth2 协议了,所以如果你已经按照 15 分钟部署一个 CAS 服务并对接 Shibboleth-IdP 3.4.6 的路程部署好了 CAS 服务的话,那么只需要略微的调整,就可以让他支持 OAuth2 了,5 分钟足矣。

下文假定已经安装好了 shibboleth-idp-3.4.6 和 cas 6.1 ,并使用 httpd 方式代理发布。

设置好 clientId , clientSecret ,设置好允许的 serviceId ,也就是 redirect_uri 。

此处默认的值是 NEST ,此时 userinfo 的中,属性部分是带 attributes 的子结构的, 如果是 FLAT 的话,则会去掉结构铺平。以下示例引用自 Apereo CAS 官网

Shibboleth-IdP 的 OAuth2 对接需要去掉结构,所以我们使用 FLAT 模式

如果没有 CAS 部署的前序工作的话,5 分钟的时间可能不太够。但是既然 FLAG 已经立好了。。。我们可以用 oauth-server-lite 来快速的构建一个 oauth 服务。

配置文件的示例。考虑到 5 分钟还是有点紧张,我们只挑重要的部分修改。把 ldap 部分的配置修改为实际的 ldap 参数,把 http->session_options->domain 修改为实际的服务器域名。然后执行 ./control start 运行

其实 3.4.6 之后,由于新版插件均采用标准的 Externel 模式运行,因此 IdP 的 OAuth2 对接和 CAS 对接基本是完全一致的 —— 实际上 OAuth2 插件本来就是在 CAS 插件的基础上改的。有变化的地方仅 2 处。

更多细节可以关注 上海教育认证中心-IdP-Oauth2 对接 中的配置说明。

CC BY-SA

我的博客即将同步至 OSCHINA 社区,这是我的 OSCHINA ID:小冯冯,邀请大家一同入驻: https://www.oschina.net/sharing-plan/apply

项目地址: https://github.com/liangjinquan17/spring-security-demo

配置AuthorizationServerConfigurerAdapter需要注意的地方有三,1.密码校验方式 (PasswordEncoder)2.AuthenticationManager 3.UserDetailsService

1.新建类继承AuthorizationServerConfigurerAdapter,重写三个config方法,注入PasswordEncoder、AuthenticationManager、UserDetailsService。这三个实现类均有WebSecurityConfigurerAdapter类提供。

2.首先我们来看下WebSecurityConfigurerAdapter类是怎样提供PasswordEncoder、AuthenticationManager、UserDetailsService的。

3.接着我们来看下继承AuthorizationServerConfigurerAdapter的新类

4.调用授权接口获取token值:

http://localhost:8080/oauth/token?username=admin&password=admin&grant_type=password&scope=admin

注意了,我们不是配置了client和secret的,这时候需要把这两个参数带上,可以放header也可以放body里面;

5.至于oauth2的四种授权方式我就不一一配置了。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/279837.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-21
下一篇2023-04-21

发表评论

登录后才能评论

评论列表(0条)

    保存