加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 添加安全标头

发布时间:2020-12-15 01:04:53 所属栏目:Java 来源:网络整理
导读:我试图以下面的格式在Java Axis2客户端中生成安全头. 以下是我目前的代码: SOAPHeaderElement wsseSecurity = new SOAPHeaderElement( new PrefixedQName("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd","Security"

我试图以下面的格式在Java Axis2客户端中生成安全头.

以下是我目前的代码:

SOAPHeaderElement wsseSecurity = new SOAPHeaderElement(
        new PrefixedQName("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd","Security","wsse"));         
wsseSecurity.setMustUnderstand(true);
wsseSecurity.setActor(null); 

SOAPElement sub =wsseSecurity.addChildElement("UsernameToken");
sub.setAttribute("wsu:Id","UsernameToken-2");

SOAPElement userElement = sub.addChildElement("Username");
userElement.addTextNode("xxx"); 

SOAPElement pwdElement = sub.addChildElement("Password");
pwdElement.setAttribute("Type","wsse:PasswordText");
pwdElement.addTextNode("xxx");

stub.setHeader(wsseSecurity);
最佳答案
这可能会帮到你.看一看:

private static final String cNODE_USRTOKEN = "UsernameToken";
private static final String cNODE_USERNAME = "Username";
private static final String cNODE_PASSWORD = "Password";
private String iUsername;
private String iPassword;
private static final Logger cTRACE = Logger.getLogger(UsernameTokenHandler.class.getName());

public Element getToken() 
{


    Element assertion = null;
    SOAPElement soapElement = null;

    try 
    {

        SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();
        SOAPPart sOAPPart = soapMessage.getSOAPPart();
        SOAPEnvelope envelope = sOAPPart.getEnvelope();
        SOAPHeader header = envelope.getHeader(); 

        if (header==null) 
        {
            // no header yet,create one
            header = envelope.addHeader();
        }
        SOAPElement security = header.addChildElement("Security","wsse","http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");



        Name tUserTokenElementName = envelope.createName(cNODE_USRTOKEN,"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
        SOAPElement tUserTokenElement = security.addChildElement(tUserTokenElementName);
        tUserTokenElement.removeNamespaceDeclaration("wsse");
        tUserTokenElement.addNamespaceDeclaration("wsu","http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd");

        // user name child
        Name tUsernameElementName = envelope.createName(cNODE_USERNAME,"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
        SOAPElement tUsernameElement = tUserTokenElement.addChildElement(tUsernameElementName);
        tUsernameElement.removeNamespaceDeclaration("wsse");
        tUsernameElement.addTextNode(iUsername);

        // password child
        Name tPasswordElementName = envelope.createName(cNODE_PASSWORD,"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
        SOAPElement tPasswordElement = tUserTokenElement.addChildElement(tPasswordElementName);
        tPasswordElement.removeNamespaceDeclaration("wsse");
        tPasswordElement.addTextNode(iPassword);
        tPasswordElement.setAttribute("Type","http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText");

        assertion = (Element) security;

        //printAssertion(assertion);
        //MessageElement samlElement = new MessageElement(assertion);
        //SAMLHandler.setAssertion((SOAPElement) samlElement);
        //soapElement = (SOAPElement) samlElement;

    } 
    catch (Exception e) 
    {
        if (cTRACE.isLoggable(Level.SEVERE)) 
        {
            cTRACE.logp(Level.SEVERE,UsernameTokenHandler.class.getName(),"handleMessage","Unable to add WSS credentials",e);
        }

        // stop processing
        return assertion;
    }

    // continue processing
    return assertion;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读