Weblogic:使用摘要密码通过用户名令牌进行Web服务身份验证

时间:2012-06-15 09:01:52

标签: java authentication weblogic

我正在尝试实现一个简单的Web服务,部署在weblogic上,通过用户名令牌和密码摘要进行身份验证。有很多使用明文的代码示例,但我找不到任何使用摘要密码的示例。

我尝试过使用此网络服务:

@WebService
@Policies({ @Policy( uri = "../policy/usernametoken.xml" ) } )
public class Hello{

    public String sayHello(String name){
        return "Hello : " + name;
    }
}

,使用此WS-policy文件usernametoken.xml:

<wsp:Policy
    xmlns:wsp="http://www.w3.org/ns/ws-policy"
    xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" >
    <sp:SupportingTokens>
        <wsp:Policy>
            <sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/wssecuritypolicy/200702/IncludeToken/AlwaysToRecipient">
                <wsp:Policy>
                    <sp:WssUsernameToken10/>
                     <sp:HashPassword />
                </wsp:Policy>
            </sp:UsernameToken>
        </wsp:Policy>
    </sp:SupportingTokens>
</wsp:Policy>

,这个客户:

public static void main(String[] args)
{
    HelloService service = new HelloService();
    Hello port = service.getHelloPort();

    List<CredentialProvider> credProviders = new ArrayList<CredentialProvider>();
    String username = "weblogic";
    String password = "web1ogiC";

    CredentialProvider cp = new ClientUNTCredentialProvider(username.getBytes(), password.getBytes());
    credProviders.add(cp);

    Map<String, Object> rc = ((BindingProvider)port).getRequestContext();
    rc.put(WSSecurityContext.CREDENTIAL_PROVIDER_LIST, credProviders);
    String result = port.sayHello("xxx1");

    System.out.println("*************** RESULT from WebService ***************");
    System.out.println(result);
    System.out.println("******************************************************");
}

,但它不起作用。

还要通过SOAPUI工具调用digest密码,但它也无法正常工作。

任何人都可以通过提供一个工作示例或修复我的示例来帮助我吗?

编辑:我使用weblogic 12c

0 个答案:

没有答案