Tenho um Web Service e estou usando JDBCRealm como forma de autenticação, porém estou com algumas dúvidas/problemas.
Por exemplo:@WebService(targetNamespace = "NameSpaceExample")
public class MyWS {
@WebMethod
@RolesAllowed("role1")
public String sayHello(String name) {
return "Hello " + name;
}
@WebMethod
@RolesAllowed("role2")
public String sayBye(String name) {
return "Bye " + name;
}
<security-role-mapping>
<role-name>role1</role-name>
<group-name>group1</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>role2</role-name>
<group-name>group2</group-name>
</security-role-mapping>
<security-constraint>
<display-name>Authorization</display-name>
<web-resource-collection>
<web-resource-name>Authorization</web-resource-name>
<description/>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>PUT</http-method>
<http-method>HEAD</http-method>
<http-method>POST</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>role1</role-name>
<role-name>role2</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>postgres-realm</realm-name>
</login-config>
Ok, agora no banco de dados, tenho cadastrado 2 usuários:
User1 - pertence ao grupo group1
User2 - pertence ao grupo group2
No entando se eu tento acessar o método sayBye que possui @RolesAllowed("role1") com o usuário User2 eu consigo obter a resposta do método normalmente,
sendo que o User2 pertence ao group2 e não deveria acessar um método que está liberado apenas para usuários do group1.
Alguém pode me explicar corretamente como funciona ?
Obrigado