我正在使用WSO2 Identity Server 4.1.0提供的AuthenticationAdmin网络服务进行用户身份验证。
通过webservice操作'login',我可以验证用户并检索JSESSIONID。
创建的会话最终会超时。如何检查会话是否仍然有效?
一些上下文(也是为了检查我是否正确): 我运行的是辅助Web服务,它不受WSO2服务器的“保护”。我可以修改这个辅助Web服务,以便它可以检查用户是否已成功登录。但我不知道如何。 因此,一旦检索到JSESSIONID,我将需要在每次用户访问辅助Web服务时使用它。
答案 0 :(得分:1)
如果我理解正确,您只需要为经过身份验证的用户授予对Web服务的访问权限。
有许多方法可以保护Web服务。由于您使用AuthenticationAdmin登录,因此您可以将Web服务定义为管理服务。
我猜你正在为你的网络服务尝试代码优先。您可以尝试将您的Web服务扩展到org.wso2.carbon.core.AbstractAdmin。
例如,我们可以在WSO2内核中看到UserAdmin服务。 https://svn.wso2.org/repos/wso2/carbon/kernel/branches/4.1.0/core/org.wso2.carbon.user.mgt/4.1.0/
axis2 services.xml: https://svn.wso2.org/repos/wso2/carbon/kernel/branches/4.1.0/core/org.wso2.carbon.user.mgt/4.1.0/src/main/resources/META-INF/services.xml
您可以在services.xml中看到以下属性
<parameter name="adminService" locked="false">true</parameter>
<parameter name="hiddenService" locked="false">true</parameter>
使用此服务生成的WSDL,您可以创建服务存根。
现在您可以使用存根和cookie来访问该服务。例如,请参阅https://svn.wso2.org/repos/wso2/carbon/kernel/branches/4.1.0/core/org.wso2.carbon.user.mgt.ui/4.1.0/src/main/java/org/wso2/carbon/user/mgt/ui/UserAdminClient.java
ServiceClient client = stub._getServiceClient();
Options option = client.getOptions();
option.setManageSession(true);
option.setProperty(org.apache.axis2.transport.http.HTTPConstants.COOKIE_STRING, cookie);
我希望这会有所帮助。
谢谢!