Para el post de hoy vamos a ver como se asegura un Servicio Web con HTTP Auth, básica, en Weblogic. Para ello nos podemos basar en un proyecto anterior en el que creamos un WS muy básico: Hello World.
En el Security Realm > MyRealm tenemos que crear:
- Usuario: user/12345678
- Grupo: TutorialUser
- Añadir el usuario al grupo
En la consola de Weblogic, como vemos en la figura:
En el web.xml hay que añadir la configuración de seguridad pertinente (path, tipo básico,….):
<!--
SECURITY
-->
<security-constraint>
<display-name>Regla01</display-name>
<web-resource-collection>
<web-resource-name>WSPOST</web-resource-name>
<description />
<url-pattern>/*</url-pattern>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>TutorialUser</role-name>
</auth-constraint>
</security-constraint>
<session-config>
<session-timeout>5</session-timeout>
</session-config>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>myrealm</realm-name>
</login-config>
<security-role>
<description />
<role-name>TutorialUser</role-name>
</security-role> |
<!--
SECURITY
-->
<security-constraint>
<display-name>Regla01</display-name>
<web-resource-collection>
<web-resource-name>WSPOST</web-resource-name>
<description />
<url-pattern>/*</url-pattern>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>TutorialUser</role-name>
</auth-constraint>
</security-constraint>
<session-config>
<session-timeout>5</session-timeout>
</session-config>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>myrealm</realm-name>
</login-config>
<security-role>
<description />
<role-name>TutorialUser</role-name>
</security-role>
Y en el weblogic.xml mapeamos con el rol (si no hacemos esto no funcionará):
<wls:security-role-assignment>
<wls:role-name>TutorialUser</wls:role-name>
<wls:principal-name>TutorialUser</wls:principal-name>
</wls:security-role-assignment> |
<wls:security-role-assignment>
<wls:role-name>TutorialUser</wls:role-name>
<wls:principal-name>TutorialUser</wls:principal-name>
</wls:security-role-assignment>
Podemos probarlo con SoapUI creando un nuevo proyecto de WS, con la dirección del WSDL (http://localhost:7001/wsc/HelloService?WSDL) y las credenciales creadas en WebLogic anteriormente: