Конфигурация WS-Security Websphere - PullRequest
       30

Конфигурация WS-Security Websphere

1 голос
/ 12 августа 2011

Я пытаюсь разработать веб-сервис, который использует WS-Security с использованием Websphere 7 и JAX-WS. Просматривая некоторые руководства, кажется, что я ДОЛЖЕН создать реестр пользователей сервера приложений и сохранить имя пользователя / пароли внутри этого сервера. Есть ли в любом случае необходимость избегать создания имен пользователей на самом сервере и каким-либо образом захватывать заголовок и выполнять проверку на основе другой настраиваемой конфигурации безопасности, такой как единый вход?

Я могу создать обработчик для получения заголовка, но когда mustUnderstands установлен в 1 в запросе (что является обязательным), он отклоняется до того, как мой обработчик увидит сообщение.

Я только собираюсь использовать часть UsernameToken в WS-Security.

Любая помощь приветствуется.

Пример моей просьбы

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header>
    <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
      <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" Id="unt_20">
        <wsse:Username>some_username</wsse:Username>
        <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">some_password</wsse:Password>
      </wsse:UsernameToken>
    </wsse:Security>
  </soapenv:Header>
  <soapenv:Body>
    ...body...
  </soapenv:Body>
</soapenv:Envelope>

Можно ли создать собственную реализацию безопасности, чтобы я мог использовать мою существующую схему проверки пользователя?

Ответы [ 5 ]

1 голос
/ 05 декабря 2015

Вы можете использовать готовую среду выполнения WS-Security с политиками / привязками для достижения этой цели, но вы должны написать собственный код, чтобы переопределить поведение по умолчанию при проверке реестра пользователей для UsernameTokens.

См. Эту статью для использования собственного механизма аутентификации при использовании UsernameToken:

Конфигурирование конфигурации вызывающего абонента UsernameToken без взаимодействия с реестром

См. Эту статью, если вы также хотите создать учетные данные WebSphere на основе имени пользователя в этом токене:

Замена метода аутентификации потребителя UsernameToken с использованием стекового модуля входа в систему JAAS

1 голос
/ 09 сентября 2011

Другой возможный ответ - создать перехватчик ассоциации доверия (TAI). Это в основном расширяет вашу текущую безопасность.

Вот полезная ссылка для начала: http://www.ibm.com/developerworks/websphere/techjournal/0508_benantar/0508_benantar.html

1 голос
/ 15 августа 2011

Может показаться, что я могу реализовать пользовательский реестр пользователей, который может взаимодействовать с реализацией безопасности по моему выбору. Ссылка на статью IBM:

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/tsec_useregistry.html

0 голосов
/ 20 августа 2011

JAX-WS должен позволить вам иметь пользовательский перехватчик.

Взгляните на этот весенний конфиг, чтобы увидеть, как я добавил перехватчик к конечной точке службы.

    <jaxws:endpoint id="pqdws"
                implementor="#Atypon"
                address="/pqdws"
                publishedEndpointUrl="@ws_webapp_url_ext@">
    <jaxws:properties>
        <entry key="exceptionMessageCauseEnabled" value="true"/>
        <entry key="Content-length"
    </jaxws:properties>
    <jaxws:inInterceptors>
        <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
            <constructor-arg>
                <map>
                    <entry key="action" value="UsernameToken"/>
                    <entry key="passwordType" value="PasswordText"/>
                    <entry key="passwordCallbackRef">
                        <ref bean="passwordCallback"/>
                    </entry>
                </map>
            </constructor-arg>
        </bean>
    </jaxws:inInterceptors>
    </jaxws:endpoint>

    <bean id="passwordCallback"
      class="access.ws.ServerPasswordCallback">
    <property name="username" value="@ws_sec_username@"/>
    <property name="password" value="@ws_sec_password@"/>
</bean>

Затем перехватчик может делать все, что вы пожелаете, в том числе вызывать внешнюю службу для аутентификации.

0 голосов
/ 14 августа 2011

Можете ли вы рассказать, чего вы хотите достичь?

Серверу WAS необходимо проверить имя пользователя и пароль, которые указаны в заголовке, в отношении его реестра пользователей (который может быть LDAP, файловым реестром и т. Д.).

Токены LTPA (которые используются WebSphere и связанными продуктами для SSO) также могут использоваться.

Если вы изложите свои требования, люди здесь смогут вам помочь.

НТН

Manglu

...