Tento příspěvek popisuje, jak zabezpečit webovou aplikaci napsanou na platformě Java a běžící na aplikačním serveru GlassFish. Cílem bude zabránit přístupu na vybrané stránky těm uživatelům, kteří nemají přidělenou potřebnou roli.
1. Vytvoření databáze
2. Nastavení aplikačního serveru

3. Vytvoření a nastavení enterprise aplikace
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsf</form-login-page>
<form-error-page>/loginError.jsf</form-error-page>
</form-login-config>
</login-config>
<security-role>
<description>READWRITE</description>
<role-name>READWRITE</role-name>
</security-role>
<security-role>
<description>SUPERWRITE</description>
<role-name>SUPERWRITE</role-name>
</security-role>
<security-role>
<description>ADMIN</description>
<role-name>ADMIN</role-name>
</security-role>
<security-constraint>
<display-name>Editation</display-name>
<web-resource-collection>
<web-resource-name>edit.jsf</web-resource-name>
<description/>
<url-pattern>/edit.jsf</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>HEAD</http-method>
<http-method>PUT</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
<auth-constraint>
<description>vkládat nesmí uživatel read-only</description>
<role-name>READWRITE</role-name>
<role-name>SUPERWRITE</role-name>
<role-name>ADMIN</role-name>
</auth-constraint>
<user-data-constraint>
<description/>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<sun-web-app error-url="">
<context-root>/SecurityGUI</context-root>
<security-role-mapping>
<role-name>ADMIN</role-name>
<group-name>3</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>READWRITE</role-name>
<group-name>1</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>SUPERWRITE</role-name>
<group-name>2</group-name>
</security-role-mapping>
<class-loader delegate="true"/>
<jsp-config>
<property name="keepgenerated" value="true">
<description>Keep a copy of the generated servlet class' java code.</description>
</property>
</jsp-config>
</sun-web-app>
public String getLoginName() {
Principal principal = FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal();
if (principal == null) {
return null;
} else {
return principal.getName();
}
}
@Resource SessionContext context;
v mětodě dále:
Principal principal = context.getCallerPrincipal();
@RolesAllowed("manager")
public Country getCountryByIso(String iso) { ... }
@Stateless
@DeclareRoles({"manager", "manager2"})
public class CommonDAOBean implements CommonDAOBeanLocal { … }
context.isCallerInRole("manager");
| Příloha | Velikost |
|---|---|
| 01b.png | 11.48 KB |
Komentáře
Poslat nový komentář