WSO2检查用户是否经过身份验证JSESSIONID,如果会话仍然有效

时间:2013-06-27 09:10:33

标签: authentication wso2 jsessionid

我正在使用WSO2 Identity Server 4.1.0提供的AuthenticationAdmin网络服务进行用户身份验证。

通过webservice操作'login',我可以验证用户并检索JSESSIONID。

创建的会话最终会超时。如何检查会话是否仍然有效?

一些上下文(也是为了检查我是否正确): 我运行的是辅助Web服务,它不受WSO2服务器的“保护”。我可以修改这个辅助Web服务,以便它可以检查用户是否已成功登录。但我不知道如何。 因此,一旦检索到JSESSIONID,我将需要在每次用户访问辅助Web服务时使用它。

1 个答案:

答案 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/

UserAdmin服务: https://svn.wso2.org/repos/wso2/carbon/kernel/branches/4.1.0/core/org.wso2.carbon.user.mgt/4.1.0/src/main/java/org/wso2/carbon/user/mgt/UserAdmin.java

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,您可以创建服务存根。

请参阅https://svn.wso2.org/repos/wso2/carbon/kernel/branches/4.1.0/service-stubs/org.wso2.carbon.user.mgt.stub/4.1.0/

现在您可以使用存根和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);

我希望这会有所帮助。

谢谢!