3

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

通过 web 服务操作“登录”,我可以验证用户并检索 JSESSIONID。

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

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

4

1 回答 1

3

如果我理解正确,您只需要为经过身份验证的用户授予对 Web 服务的访问权限。

有很多方法可以保护 Web 服务。由于您使用 AuthenticationAdmin 登录,因此您可以将 Web 服务定义为管理服务。

我猜你正在为你的网络服务尝试代码优先的方法。您可以尝试将您的 Web 服务扩展到 org.wso2.carbon.core.AbstractAdmin。

例如,我们可以在 WSO2 Kernel 中看到 UserAdmin 服务。https://svn.wso2.org/repos/wso2/carbon/kernel/branches/4.1.0/core/org.wso2.carbon.user.mgt/4.1.0/

用户管理服务: 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);

我希望这有帮助。

谢谢!

于 2013-06-28T03:42:46.180 回答