我刚刚开始使用安装了SP01的WSO2 IS 5.0.0版 . 我已经配置了一个依赖方,我正在尝试使用Open ID Connect / Oauth 2.0协议,以便使用只读LDAP对我的用户进行身份验证 .

文档说明我们可以控制PRODUCT_HOME / repository / conf / identity.xml中的以下XML配置标记的到期时间 .

<!-- Default validity period for Authorization Code in seconds -->
<AuthorizationCodeDefaultValidityPeriod>300</AuthorizationCodeDefaultValidityPeriod>

<!-- Default validity period for user access tokens in seconds (default: 3600) -->
<AccessTokenDefaultValidityPeriod>60</AccessTokenDefaultValidityPeriod>

<!-- Default validity period for application access tokens in seconds (default: 3600)-->
<UserAccessTokenDefaultValidityPeriod>60</UserAccessTokenDefaultValidityPeriod>

<!-- Validity period for refresh token -->
<RefreshTokenValidityPeriod>84600</RefreshTokenValidityPeriod>

<!-- Timestamp skew in seconds -->
<TimestampSkew>300</TimestampSkew>

<!-- Enable OAuth caching -->
<EnableOAuthCache>true</EnableOAuthCache>

我已将AccessTokenDefaultValidity和UserAccessTokenValidity都设置为60而不是3600,但似乎WSO2 IS应用程序在设置的时间内不会使它们到期 .

我也使用PASSWORD授权类型来创建访问令牌 .

为了测试这个,我使用编写的Java客户端来联系服务器并发送用户名和密码 . 这可以很好地生成访问令牌 .

这是来自WSO2 IS服务器的响应(减去id_token的安全性):{27786594:"openid","token_type":"bearer", "expires_in":0 ,"refresh_token":"a3699846516d7c39c24fea76171bd41","access_token":"88286cb21f3a9888945eb806f8abcef"}

我认为 expires_in 是错误的,因为它说0秒,换句话说,我生成的令牌应该立即过期 . 根据我的配置,我希望它说60秒 .

等待大约1分钟后,我仍然可以使用访问令牌来获取我的id_token,从而再次获取受保护的声明,即使它应该按照xml配置过期 .

注意:我没有使用WSO2 IS APIM,这仅适用于IS产品 .

谢谢你的时间