Avatar billede soaphovedet Nybegynder
25. februar 2004 - 13:25 Der er 11 kommentarer og
1 løsning

Mulighederne for bruger-authentication med web services? (AXIS)

Jeg har en AXIS server der stiller nogle services til rådighed.
Jeg har forskellige brugerlevels (Admin/Normal Bruger); de skal selvfølgelig ikke have samme rettigheder.

Et udkast til et klassediagram kan ses her:
http://maskinmarked.dk/ho/viewtopic.php?t=73
(første udkast)

Den nemme løsning, som vi helst vil undgå, er at brugeren sender user/pass med som parameter på hvert metodekald.
Det vi leder efter er at serveren kan tjekke brugerens rettigheder, dvs. pull i stedet for push.
Avatar billede arne_v Ekspert
25. februar 2004 - 14:09 #1
En mulighed er at protecte web servicen, lad brugeren logge ind engang
med BASIC authentication, lade containeren holde styr på sessionen
og have web service koden checke role på bruger.
Avatar billede soaphovedet Nybegynder
25. februar 2004 - 14:18 #2
Kunne du være lidt mere specifik?

Du vil bruge noget med Beans?
Avatar billede arne_v Ekspert
25. februar 2004 - 14:40 #3
Der behøver ikke nødvendigvis være beans med.
Avatar billede arne_v Ekspert
25. februar 2004 - 14:41 #4
Eksempel på web.xml fragment:

  <security-constraint>
      <web-resource-collection>
          <web-resource-name>test</web-resource-name>
          <url-pattern>/services/TestUserService</url-pattern>
      </web-resource-collection>
      <auth-constraint>
          <role-name>wsuser</role-name>
      </auth-constraint>
  </security-constraint>
  <login-config>
      <auth-method>BASIC</auth-method>
  </login-config>
Avatar billede arne_v Ekspert
25. februar 2004 - 14:45 #5
Du kan fiske HTTP sessionen ud med:

        MessageContext  msgctx = MessageContext.getCurrentContext();
        AxisHttpSession wsses = (AxisHttpSession)msgctx.getSession();
        HttpSession httpses = wsses.getRep();
Avatar billede soaphovedet Nybegynder
25. februar 2004 - 15:00 #6
ok, ser egenligt forståeligt nok ud.

virker den fremgangsmåde sammen med https?

kryptering er et must for os nemlig.
Avatar billede arne_v Ekspert
25. februar 2004 - 15:04 #7
Men det er nok mere relevant at fiske brugernavnet ud med:

MessageContext  msgctx = MessageContext.getCurrentContext();
String user = msgctx.getUsername();
Avatar billede arne_v Ekspert
25. februar 2004 - 15:18 #8
Jeg troede faktisk at man kunne checke role, men man kan kun (endnu) checke
user.

Men det giver dig trods alt mulighed for at lave hele security i web.xml
eller at bruge web.xml til at skaffe et brugernavn som du så kan teste på
i dine services.
Avatar billede soaphovedet Nybegynder
25. februar 2004 - 15:49 #9
ok jeg kigger på det. Muligt at jeg kommer igen hvis jeg får problemer.

Mange tak for hjælpen
Avatar billede soaphovedet Nybegynder
25. februar 2004 - 20:02 #10
ok det var egenligt nemt nok, du får points :)
Avatar billede soaphovedet Nybegynder
25. februar 2004 - 20:06 #11
- som jeg egenligt ikke kan give dig da du ingen "svar" har lagt :\
Avatar billede arne_v Ekspert
25. februar 2004 - 22:03 #12
Jeg skynder mig at ligge et svar så ...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester