Toon posts:

[ASP.NET] Login via DB, welke aanpak?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een site waarin ik users in wil laten loggen. Nu is de vraag hoe ik dit het beste aan kan pakken. Iemand die advies wil geven? Ik heb tot nu toe geen ervaring/kennis wat authenticatie en authorizatie betreft.


Stukje context
---------------------
Een gebruiker moet op de site in kunnen loggen in een bepaalde rol (met bepaalde rechten) en daarnaast moet deze gebruiker ook andere rechten toegekent kunnen krijgen (buiten de rol om). Op basis van de rechten van de gebruiker/rol moet deze gebruiker een beperkte toegang tot de site krijgen.

Het opnemen van users en roles in de web.config is geen optie, aangezien het toevoegen van users middels een fatsoenlijke GUI dient te gaan. En daarnaast kan ik in de config-file ook geen specifieke rechten (al dan niet in een rol) toekennen.

Dus wordt het iets met een database.
---------------------

Ik heb geen idee wat voor stappenplan ik moet doorlopen om dit te realiseren. Search (Got, Google, MSDN) heeft ook geen duidelijke richtlijn opgelevert. Iemand die hier wel een duidelijk idee bij heeft? Ik hoor het errug graag van je

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Zoekwoorden:
Rolebased Security
Forms Authentication

De methodiek door jou geschetst is ongeveer volledig geimplementeerd in ASP.Net
Kijk anders eens in de voorbeeldapplaties van bijvoorbeeld IBuySpyPortal; hoewel ze hier en daar nogal een steekje laten vallen, laat het wel een mooi voorbeeld van deze security zien.

[ Voor 85% gewijzigd door gorgi_19 op 01-09-2003 10:18 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

ik vond dit artikel op codeproject.com zeer interessant.

Ook in hun search vind je wel wat.

[ Voor 40% gewijzigd door Verwijderd op 01-09-2003 10:23 ]


Verwijderd

Topicstarter
IBuySpyPortal? heb je een url?

Verwijderd

Topicstarter
ok toffenboy, ik zal dat ook eens even aandachtig doorlezen. Lijkt wel veel op wat ik wil ja, alleen heb ik nog een extra element in het login-gebeuren, nml. een rol bestaat uit een aantal rechten.

Een gebruiker heeft dus rechten (al dan niet in een aan hem toegekende rol; een rol is slechts een verzameling van rechten). Maar dit zal wat implementatie betreft niet zo ingrijpend verschillen lijkt me.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 01 September 2003 @ 10:25:
ok toffenboy, ik zal dat ook eens even aandachtig doorlezen. Lijkt wel veel op wat ik wil ja, alleen heb ik nog een extra element in het login-gebeuren, nml. een rol bestaat uit een aantal rechten.

Een gebruiker heeft dus rechten (al dan niet in een aan hem toegekende rol; een rol is slechts een verzameling van rechten). Maar dit zal wat implementatie betreft niet zo ingrijpend verschillen lijkt me.
Nee, een gebruiker heeft een aantal rollen.
Aan die rollen zitten rechten gekoppeld.

Je kan het dan nog verder maken door groepen te maken..
Een groep heeft een aantal rollen.
Een gebruiker zit in een of meerdere groepen.

Over die URL:
In principe komt de gebruikte techniek heel erg overeen met de voorbeeldapplicatie.
Waar ik zelf alleen niet zo een fan van ben is het bij iedere request opvragen van de rechten. Eventueel kan je dat ook beperken door de rollen encrypted in een cookie te zetten en zo een databasecall uit te sparen. Zeker als je de cookie laat verlopen met een tijd van 3 minuten, kan er imho weinig mis gaan.

[ Voor 22% gewijzigd door gorgi_19 op 01-09-2003 10:28 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 00:26
Ik heb zelf in ASP met behulp van een Oracle database een inlogsite opgezet. Hiervoor heb ik gebruik in Oracle de volgende tabellen (samengevat).


Medewerker: (Medewerkergegevens)
MedewerkerID
Accountnaam
wachtwoord

Rol: (Alle rollen die binnen het systeem zijn gedefinieerd)
RolID
Omschrijving

Medewerkerrol: (Welke medewerker heeft welke rol)
MedewerkerID
RolID

Authenticatie: Welke toegansrechten heeft een bepaalde rol tot een pagina
RolID
Webpagina
Toeganscode


Medewerkers loggen in via een gebruikersnaam/wachtwoord. Op de volgende pagina wordt allereerst geverifieerd waar de gebruiker vanaf komt en daarna worden de gebruikersnaam en wachtwoord gecontroleerd. Wordt de gebruiker succesvol aangemeldt, dan wordt in een sessievariabele het medewerkerID gestopt.

De volgende stap is om de toegangsrechten te bepalen. Aan de hand van het in het sessie gedefinieerde MedewerkerID worden de rollen van de medewerker bepaald. Voor de aan de medewerker toegekende rollen wordt per pagina bepaald welk toegangsrecht deze rol tot de desbetreffende pagina heeft.

De laatste procedure wordt dus bij elke aanroep van een pagina aangeroepen. Mocht op dat moment geen medewerrkerID gedefinieerd zijn dan wordt er doorgelinkt naaar de inlogpagina.

Verwijderd

Topicstarter
ja je hebt gelijk gorgi,

maar om mijn applicatie extra flexibel te houden, moet het mogelijk zijn een afzonderlijk recht (bijv. recht 1 in de beheer-rol; toevoegen van een row aan tabel-1) toe te kennen aan een gebruiker, zonder dat de andere rechten binnen de beheer-rol toegekent worden aan deze gebruiker.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 01 September 2003 @ 10:30:
ja je hebt gelijk gorgi,

maar om mijn applicatie extra flexibel te houden, moet het mogelijk zijn een afzonderlijk recht (bijv. recht 1 in de beheer-rol; toevoegen van een row aan tabel-1) toe te kennen aan een gebruiker, zonder dat de andere rechten binnen de beheer-rol toegekent worden aan deze gebruiker.
Dat kan.
Je plaatst iemand in een groep; daarnaast kan je hem nog extra individuele rollen toekennen.

Een groepsrecht is in principe een verzameling individuele rollen.
Je krijgt dan dus voor een persoon een groepsrechts (verzameling ind. rollen) en de extra rollen.

Daarna kan je controleren met:
Visual Basic .NET:
1
2
3
4
5
If User.IsInrole("AllowedToEditMessage")
    ' haal data op en laat wat zien
Else
    Throw new exception("Error: User not allowed")
End if

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
ok, ik ga hier eens even lekker mee aan de slag :P


Houd me wel ff bezig denk ik zo :)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 01 September 2003 @ 10:41:
ok, ik ga hier eens even lekker mee aan de slag :P


Houd me wel ff bezig denk ik zo :)
Ow ja, en je hoeft geen abstracte namen en dingen te gebruiken. (zoals: niveau1, niveau2,etc).

Je kan gewoon de beestjes bij de naam noemen... :P

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1