Security - JAAS Login


Localizarea codului sursă
O introducere în JAAS
Examinarea notelor despre codare
Examinarea setărilor de securitate necesare


Localizarea codului sursă 

Localizaţi codul sursă în
directoarele rădăcină_profil/samples/src/TechnologySamples/JAASLoginEJB şi rădăcină_profil/samples/src/TechnologySamples/JAASLoginWeb.

Utilizatorii z/OS: Codul sursă pentru exemple nu este furnizat pe platforma z/OS, deoarece aplicaţiile exemplu nu sunt construite pe platforma z/OS.



O introducere în JAAS 

Java Authentication and Authorization Service (JAAS) este o metodă de securitate. Autentificarea este identificarea unei entităţi. Autorizarea este procesul prin care se verifică dacă un utilizator are acces la resurse sau informaţii protejate şi se realizează numai o autentificare realizată cu succes. JAAS face parte din Specificaţia J2EE 1.3. WebSphere Application Server suportă JAAS şi integrează JAAS în cadrul său de lucru general pentru securitate.

Clasele şi interfeţele JAAS cheie sunt:

Pentru programare şi utilizare în JAAS, consultaţi specificaţia pe situl Web IBM developerWorks şi derulaţi în jos pentru a găsi documentaţia JAAS corespunzătoare platformei dumneavoastră. Consultaţi fişierul login.html din fişierul JaasDocs.jar pentru detalii privind dezvoltarea modulelor de logare JAAS.

Pentru informaţii detaliate privind dezvoltarea JAAS pentru WebSphere Application Server, consultaţi Centrul de informare WebSphere Application Server. Faceţi clic pe Securitate > Dezvoltarea aplicaţiilor securizate > Dezvoltarea cu Java Authentication and Authorization Service pentru logare programatică.

Examinarea notelor despre codare 

Exemplul JAAS Login demonstrează cum se utilizează pe partea de server standardul Java Authentication and Authorization Service (JAAS) şi extensiile JAAS pentru ca WebSphere Application Server să autentifice un utilizator real pentru runtime-ul de securitate WebSphere Application Server. Sunt încorporate următoarele tehnologii:

Exemplul JAAS Login face parte din pachetul TechnologySamples.ear. Exemplul conţine un modul Web (JAASLoginWeb.war) şi un modul Enterprise JavaBeans (EJB) (JAASLoginEJB.jar).

Model

Clasa SampleBean este un bean enterprise sesiune fără menţinere de stare care constă din fişierele SampleBean.java, SampleBeanHome.java şi SampleBeanBean.java. Această clasă invocă metoda getCallerPrincipal furnizată şi returnează identitatea de securitate a apelantului bean-ului enterprise.

Vizualizare

Controler

Fişierul JAASLoginServlet.java citeşte ID-ul de utilizator şi parola din cerere, apoi realizează serviciul JAAS pe partea de server. Rularea exemplului implică paşii următori:
  1. Creaţi un context de logare.
  2. Transmiteţi numele unei intrări din fişierul configuraţiei logării JAAS către constructorul LoginContext.
    Pentru WebSphere Application Server, exemplul utilizează configuraţia de logare JAAS implicită, WSLogin. Puteţi găsi această configuraţie predefinită în pagina de consolă administrativă. Faceţi clic pe Securitate > Configuraţie JAAS > Configuraţie logare aplicaţie. Fişierul local cu configuraţia de logare JAAS pentru serverul de aplicaţii este setat în fişierul rădăcină_profil/properties/wsjass.conf sau wsjass_client.conf.
  3. Transmiteţi o instanţă callback handler WebSphere Application Server, com.ibm.websphere.security.auth.callback.WSCallbackHandlerImpl, către constructorul LoginContext, pentru strângerea sau procesarea datelor de autentificare.
  4. Realizaţi autentificarea prin apelarea metodei de logare a contextului de logare.
    Informaţii importante Dacă logarea eşuează şi apare o eroare LoginException, puteţi utiliza o metodă determineCause pentru a găsi cauza rădăcină a excepţiei.
    Informaţii importante  Subiectul autentificat cu configuraţia de logare JAAS conţine un com.ibm.websphere.security.auth.WSPrincipal şi un com.ibm.websphere.security.auth.WSCredential. Dacă subiectul autentificat este transmis în metoda com.ibm.websphere.security.auth.WSSubject.doAS sau alte metode doAs, runtime-ul de securitate poate realiza verificările de autorizare pentru resursele J2EE pe baza subiectului.
  5. Dacă logarea reuşeşte, creaţi o instanţă a clasei care implementează interfaţa java.security.PrivilegedExceptionAction şi transmiteţi-o metodei com.ibm.websphere.security.auth.WSSubject.doAs. Clasa care implementează PrivilegedExceptionAction conţine codul care realizează accesul EJB.
  6. Realizaţi o delogare.

Examinaţi exemplul următor:

try {
    // creare context login folosind WebSphere Application Server
    // callback handler
    wscbh = new WSCallbackHandlerImpl(username, password);
    lc = new javax.security.auth.login.LoginContext("WSLogin", wscbh);
} catch (LoginException le) {
    .......
}
......
try {
    // perform login
    lc.login();
} catch (LoginException le) {
    ......
}
// obţinere obiect autentificat
javax.security.auth.Subject userSubject = lc.getSubject();
......

// apelare o resursă J2EE folosind subiectul autentificat;
// extragere informaţii de identificare secuuritate despre
// apelantul benului enterprise.
ejbMessage = (String)com.ibm.websphere.security.auth.WSSubject
             .doAs(userSubject,
                   new java.security.PrivilegedExceptionAction() {.....});
......
try {
    lc.logout();
} catch (LoginException le) {
    ......
}


Examinarea setărilor de securitate necesare 

Exemplul necesită să definiţi resursele EJB securizate. Când instalaţi exemplul, toate setările de securitate sunt deja configurate. Puteţi să utilizaţi RAD (Rational Application Developer) pentru a configura setările de securitate pentru acest exemplu. Paşii următori vă arată cum sunt definite în RAD setările de securitate necesare:

  1. Definiţi rolul de securitate şi legarea WebSphere:  Definiţi un rol de securitate la nivel de aplicaţie (TechnologySamples.ear) şi îl mapaţi la un subiect special, AllAuthenticatedUsers:
    1. În vizualizarea J2EE Project Explorer, expandaţi Enterprise Applicatoins > TechnologySamples.
    2. Faceţi dublu clic pe Deployment Descriptor.
    3. Selectaţi fişa Security şi apoi faceţi clic pe Add pentru a adăuga următoarele proprietăţi:
    4. În secţiunea WebSphere bindings, selectaţi All authenticated users.
    5. Salvaţi descriptorul de implementare al aplicaţiei.
  2.  Creaţi un rol de securitate la nivel de modul EJB (JAASLoginEJB.jar):
    1. În vizualizarea exploratorului de proiecte J2EE, expandaţi EJB Modules > JAASLoginEJB.
    2. Faceţi dublu clic pe Deployment Descriptor.
    3. Selectaţi fişa Assembly Descriptor.
    4. Faceţi clic pe Add în secţiunea Security Role pentru a adăuga următoarele proprietăţi:
  3.  Creaţi permisiunile metodei:
    1. În secţiunea Method permissions, faceţi clic pe Add.
    2. Selectaţi Security Roles.
    3. Selectaţi caseta de validare All Role.
    4. Faceţi clic pe Next.
    5. Selectaţi caseta de validare Sample Stateless Session Bean.
    6. Faceţi clic pe Next.
    7. Selectaţi caseta de validare Sample Stateless Session Bean.
    8. Faceţi clic pe Finish.
  4.  Mapaţi referinţa rolului de securitate şi numele rolului la legătura de rol:
    1. Faceţi clic pe fişa References.
    2. Selectaţi Sample Stateless Session Bean.
    3. Faceţi clic pe Add pentru a adăuga referinţa şi rolul de securitate.
      1. Selectaţi Security role reference.
      2. Faceţi clic pe Next.
      3. Introduceţi următoarele proprietăţi în pagina Add Security Role Reference:
        • Nume: All Role
        • Selectaţi All Role din lista Link.
        • Faceţi clic pe Finish.
  5.  Specificaţi identitatea RunAs pentru bean-ul enterprise Sample Stateless Session Bean:
    1. Faceţi clic pe fişa Access.
    2. Selectaţi Sample Stateless Session Bean în secţiunea Security Identity (Bean Level).
    3. Faceţi clic pe Add.
      1. Selectaţi Use identity of caller ca mod de rulare.
      2. Faceţi clic pe Next.
      3. Selectaţi caseta de validare Sample Stateless Session Bean.
      4. Faceţi clic pe Finish.
  6. Salvaţi descriptorul de implementare EJB.
  7. Adăugaţi următoarele permisiuni de securitate Java 2 în fişierul was.policy la nivel de aplicaţie (TechnologySamples.ear):
  8. grant codeBase "file:JAASLoginWeb.war" {
      permission javax.security.auth.AuthPermission "createLoginContext";
      permission javax.security.auth.AuthPermission "doAs";
    };
    
    grant codeBase "file:JAASLoginEJB.jar" {
      permission java.security.SecurityPermission "printIdentity";
    };
    

Setările de securitate necesare pentru acest exemplu sunt acum definite. Pentru informaţii suplimentare privind securitatea WebSphere Application Server, consultaţi Centrul de informare WebSphere Application Server.