idp 的 REST API文档?

idp 的 REST API文档?

image 我看源码里面有映射,image

可以参照普通token api尝试请求一下,key也能从代码里看出,大胆尝试,小心求证。
image
image

还有几个有关的app property参数,我想不起来我是哪里看到的这几个参数了,可能是代码里。 我翻了翻文档确实没有。你也看看代码吧: RestIdpConfig.java

# REST IDP
cuba.rest.idp.baseUrl = ${cdp.idp.url}
cuba.rest.idp.trustedServicePassword = ${cdp.idp.trustedpassword}
cuba.rest.idp.enabled = true
cuba.rest.idp.defaultRedirectUrl = https://www.baidu.com
cuba.rest.idp.pingSessionOnRequest = false

idp_ticket 这个值我已经获取到,跟token值是否一样,还是有区别?

不一样的。
idp_ticket是给web端用的,是给sp的页面打开以后判断授权用的。

token的话是你写了需要授权的restAPI用到的那个token。

举例:访问系统SP1的REST API,如果没有开启IDP, 用用户名密码取token,然后访问rest API。
如果开启了IDP,也可以用用户名密码取token,但不是从IDP服务器取token,而是从SP1取,一般情况下没事。但是假如用户在IDP修改了密码,这个时候你什么都没做,SP1的密码还是旧的,用户不可能同时用两个密码。 所以这种情况下就要:从IDP取ticket,拿这个ticket当做参数从SP1取一个token, 拿这个token去访问SP1的rest API。前提是开启cuba.rest.idp.enabled

cuba.rest.idp.enabled这个默认不是开启的?

不是。
image

还有一个叫cuba.web.idp.enable,这两个一个开启web,一个开启rest。

我开发手机端利用idp必须开启cuba.rest.idp.enabled服务?

如果你要用rest IDP,就要开启, 不用就没必要开启。 注意不是你之前开启那个web IDP

因为我做的是多个系统,然后利用idp进行单点登录,pc端没啥问题,但是我要开发手机端也要进行多个系统的单点登录是否必须使用restIDP?

你的手机端不用cuba页面,是自己开发的页面,然后使用rest API吧?
如果是这样,还是建议用rest idp, 如果不用,就没法解决我前面说的 idp密码改了,各个系统之间密码没有同步的问题。

不管用正常的rest token还是idp token, 访问哪个系统,就得从哪个系统获取token, 区别在于使用用户名密码获取普通token,还是使用idp ticket获取idp token。

如果你能做到密码同步,或者这样的case对你来说不需要考虑,就用普通token。 如果方方面面都要考虑,要么就实时同步用户密码,要么就用idp token。

我的多个系统用的是同一个用户表!

另外rest API的访问不存在单点登录一说,因为访问不同系统的api,必须从不同系统获取各自的token。 这种情况下,用普通token还是idptoken区别就是以上我说的。你自己权衡吧。
在手机上,你通过IDP服务器只能拿到idp ticket,然后用这个ticket去拿各个系统的token。或者不用这个ticket, 记住用户名密码后,获取普通token,前提要解决密码同步的问题。

还有个方案,就是重写SP端的token鉴权部分,自己写代码让SP认这个ticket, 但是这个方案我没见过例子。

同一个用户表但是在不同DB吧?
IDP的在IDP对应的数据库,SP的在SP的数据库。

如果你是共享一个库,那没啥问题。

共享一个库

那不存在密码不同步的问题了。

这样的话,我使用rest idp 还是普通的rest 就可以!

是的,普通token一步就拿到token了。

IDP token需要两步。

有个参数叫cuba.rest.storeTokensInDb, 这个是把token存到数据库,当服务重启时,之前保存过的token还有效。

既然你是共享一个库,那么这个表也就是共享的,你可以做一下测试,开启这个参数,看是不是取一个token,其他系统也能使用,因为开启参数后,系统会从数据库取token。但只是我的猜测,所以谨慎些尝试。

118个帖子被分离到新主题开启idp服务,普通token获取不到