1

Metro 2.2 フレームワークを使用して作成およびデプロイされたセキュリティ トークン サービスを、Axis 2 STS クライアントから呼び出したいと考えています。私は同じことをしようとしていますが、以下のような問題が発生しています: -

java.lang.RuntimeException:Incorrect inclusion value: -1

ソース コードを詳しく調べたところ、SecureConversationTokenBuilderクラスのコードは次のように記述されていることがわかりました。

String inclusionValue = attribute.getAttributeValue().trim();

conversationToken.setInclusion(SP11Constants.getInclusionFromAttributeValue(inclusionValue));

次に、SP11Constants.getInclusionFromAttributeValue(inclusionValue) に入り、次のコードを見ました:-

public static int getInclusionFromAttributeValue(String value ) {

    if (INCLUDE_ALWAYS.equals(value)) {
        return SPConstants.INCLUDE_TOEKN_ALWAYS;
    } else if (INCLUDE_ALWAYS_TO_RECIPIENT.equals(value)) {
        return SPConstants.INCLUDE_TOEKN_ALWAYS_TO_RECIPIENT;
    } else if (INCLUDE_NEVER.equals(value)) {
        return SPConstants.INCLUDE_TOKEN_NEVER;
    } else if (INCLUDE_ONCE.equals(value)) {
        return SPConstants.INCLUDE_TOKEN_ONCE;
    } else {
        return -1;
    }   
}

as INCLUDE_ALWAYS = "http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Always"これは、policy.xml で Metro によって定義されているものと等しくありません

http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Always

したがって、上記のコードは常に -1 を返し、次のように実行時例外をスローします。

public void setInclusion(int inclusion)  {
    if(SPConstants.INCLUDE_TOEKN_ALWAYS == inclusion || 
       SPConstants.INCLUDE_TOEKN_ALWAYS_TO_RECIPIENT == inclusion ||
       SPConstants.INCLUDE_TOEKN_ALWAYS_TO_INITIATOR == inclusion ||
       SPConstants.INCLUDE_TOKEN_NEVER == inclusion ||
       SPConstants.INCLUDE_TOKEN_ONCE == inclusion ) {
        this.inclusion = inclusion;
    } else {
        //TODO replace this with a proper (WSSPolicyException) exception
        throw new RuntimeException("Incorrect inclusion value: " + inclusion);
    }
}

Axis2 ベースの STS クライアントから呼び出された Metro Framework で作成された Security Token Service (STS) からトークンを取得できるかどうかを知りたいと思いました。

前もって感謝します。

4

0 に答える 0