我刚刚开始使用安装了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的安全性): {“scope”:“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产品。
感谢您的时间