Just nu i M3-nätverket
Jump to content

Validera användare


Guest PLEASE_DELETE_ME

Recommended Posts

Guest PLEASE_DELETE_ME

Hej hej,

då sitter man här med ännu ett problem.

Jag behöver validera användare på en sida, bara ett fåtal personer kommer ha access till denna sida och det är EXTREMT viktigt att bara dessa kan logga in.

Därför har jag valt att samtliga personer som kommer in på sida skall få upp en NT Login ruta.

 

Men jag får inte till det! Än så länge anger jag login-namnen[de som har rättigheter] statiskt i scriptet men senare kommer dessa att hämtas från en databas.

 

----------------------------------------------------------

<%@LANGUAGE="VBScript", EnableSessionState = false %>

<%

Option Explicit

Response.Buffer = True

Response.Clear

 

Function verifyUser()

Dim Myname, MyPass

Call GetUser(Myname, MyPass)

 

if len(Myname) = 0 Then

Response.Status = "401 Unauthorized"

Response.AddHeader "WWW-Authenticate","BASIC Realm=enter your realm here."

' elseif ( LCase(request.ServerVariables("LOGON_USER"))<>LCase("ese") AND LCase(request.ServerVariables("LOGON_USER"))<>LCase("wserv\lmapp") ) THEN

elseif ( LCase(request.ServerVariables("LOGON_USER"))<>LCase("wserv\lmapp") ) THEN

Response.Status = "401 Unauthorized"

Response.AddHeader "WWW-Authenticate","BASIC Realm=enter your realm here."

response.write("={"& request.ServerVariables("LOGON_USER") &"}=")

else

Response.Write(MyName & "-> passwd hemligt<BR><BR>") ' & MyPass

Response.write("<SCRIPT>alert('"& replace(request.ServerVariables("LOGON_USER"), "\", "\\") &"');</SCRIPT>")

response.write("ok, du är nu inloggad ]"& request.ServerVariables("LOGON_USER") &"[")

end if

END Function

 

Function GetUser(LOGON_USER, LOGON_PASSWORD)

Dim UP, Pos, Auth

Auth = Request.ServerVariables("HTTP_AUTHORIZATION")

LOGON_USER = ""

LOGON_PASSWORD = ""

if LCase(Left(Auth, 5)) = "basic" Then

UP = Base64Decode(Mid(Auth, 7))

Pos = InStr(UP, ":")

if Pos > 1 Then

LOGON_USER = Left(UP, Pos - 1)

LOGON_PASSWORD = Mid(UP, Pos + 1)

End if

End if

End Function

 

' Decodes a base-64 encoded string.

Function Base64Decode(base64String)

Const Base64CodeBase = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

Dim dataLength, Out, groupBegin

dataLength = Len(base64String)

Out = ""

if dataLength Mod 4 <> 0 Then

Err.Raise 1, "Base64Decode", "Bad Base64 string."

Exit function

End if

 

' Now decode each group:

For groupBegin = 1 To dataLength Step 4

Dim numDataBytes, CharCounter, thisChar, thisData, groupData

' Each data group encodes up To 3 actual bytes.

numDataBytes = 3

groupData = 0

 

For CharCounter = 0 To 3

' <B>Convert</B> each character into 6 bits of data, And add it To an integer For

' temporary storage. If a character is a '=', there is one fewer data byte. (There can

' only be a maximum of 2 '=' in the whole string.)

thisChar = Mid(base64String, groupBegin + CharCounter, 1)

if thisChar = "=" Then

numDataBytes = numDataBytes - 1

thisData = 0

Else

thisData = InStr(Base64CodeBase, thisChar) - 1

End if

 

if thisData=-1 Then

Err.Raise 2, "Base64Decode", "Bad character In Base64 string."

Exit function

End if

 

groupData = 64 * groupData + thisData

Next

 

' Convert 3-byte integer into up To 3 characters

Dim OneChar

 

For CharCounter = 1 To numDataBytes

Select Case CharCounter

Case 1: OneChar = groupData \ 65536

Case 2: OneChar = (groupData And 65535) \ 256

Case 3: OneChar = (groupData And 255)

End Select

 

Out = Out & Chr(OneChar)

Next

Next

 

Base64Decode = Out

End Function

 

Call verifyUser()

%>

----------------------------------------------------------

={Dionne}=

 

[inlägget ändrat 2003-04-07 09:53:49 av Gilbert Dionne]

Link to comment
Share on other sites

Magnus Gladh

Om du har tänkt använda dig av NT security. Så det enda du behöver göra är att skapa dessa användare så de har varsitt NT-konto på webserver/i domänen.

 

Sedan har du bort användaren IUSR_<<DATOR_NAMNET>> från de filer/mappar som skall lösenordsskyddas. Lägger till den användare som skall ha rättighet till filerna/mapparna.

 

Om nu någon surfar in på just den filen, så kommer NT själv slänga upp en loginruta och avkräva usernamn och password. Om de stämmer så har personen loggat in på din webserver och får rätt att se sidan. OM inte så kommer en Access deined sida upp.

 

- Magnus

-----------------------------------------------------

Jag är inte kaxig, jag är bara så jävla bäst...

 

Link to comment
Share on other sites

Guest PLEASE_DELETE_ME

Tack för svaret, Magnus!

Det är ju alltid en lösning att göra som du föreslog, men hur fungerar det vid backup tex ? Kommer de mappar man ändrat rättigheter behålla dess rättigheter om man nu måste läsa in från backup ?

 

Vore ju enklast med att ha allt i ett asp-script, men det kanske inte är möjligt ?

 

={Dionne}=

 

Link to comment
Share on other sites

Magnus Gladh

Om du lägger dessa filer i en egen mapp, sedan sätter du rättigheten på mappen och låter filerna ärva rättigheter från mappen så skall rättigheterna inte vara någont problem när man läser in från backupen.'

 

Kommer inte ihåg om man kan göra så i NT, man kan i win2000. Sedan hur ofta läser du in från backupen och hur många filer är det?

 

Varför lägga fler timmar/dagar på att lösa något som kanske endast ger dig 1 minuts mer arbete någon gång om året.

 

Det är inte så enkelt att ha NT-login i ett ASP-script då det inte är byggt för att hantera sådant. Visst man kan lösa det med komponenter. Men om det inte är många användare, så blir NT-grupper/NT-användare det smidigaste sättet.

 

Du kan även lägga det i en databas, det är väl det vanligaste sättet men då har inte "lika" bra säkerhet eftersom det fortfarande är IUSR_<<DATOR_NAMN>> som loggat in på filerna och inte användaren

 

 

- Magnus

-----------------------------------------------------

Jag är inte kaxig, jag är bara så jävla bäst...

 

Link to comment
Share on other sites

Guest PLEASE_DELETE_ME

Jag har nu testat det du föreslog och det fungerar, men inte riktigt som önskat (menar inte att jag inte är tacksam, för det är jag, tacksam alltså ;) ).

 

När en användare utan behörighet försökt gå in på sidan 3 gånger får denne ett felmdeddelande: Error: Access is Denied. Detta stämmer ju, men kan man istället för den texten få sidan 401.2 Unauthorized att visas?

Jag anar att det felmeddenade man får nu beror på att det är FSO- och inte webserver-verifiering.

 

En annan fråga i samband med detta,

jag har konfigurerat webservern så att jag angett domänen användarna sitter i, vid inställningarna för användarverifiering. Borde det inte gå att hämta kontoinformation(såsom namn, efternamn, användarnamn osv) därifrån då?

Med andra ord, det borde väl gå att hämta info. från AD-servern ?

 

={Dionne}=

 

[inlägget ändrat 2003-04-07 15:35:44 av Gilbert Dionne]

[inlägget ändrat 2003-04-07 15:36:24 av Gilbert Dionne]

Link to comment
Share on other sites

Magnus Gladh

1. Har aldrig tänkt på det, inte heller brytt mig då huvudsaken är att användaren inte skall komma in på sidan.

 

Du kan dock lösa det så att du låter webservern stoppa dig istället för filerna, och det gör du genom att ta bort Anonymmus access i IIS Managern under Directory security.

 

2. Japp som jag förstått det så skall man kunna fråga AD-servern vad man vill. Jag har dock aldrig gjort det men har sett att frågorn varit uppe förr här på forumet, så det är bara att söka här eller på nätet, för det går.

 

- Magnus

-----------------------------------------------------

Jag är inte kaxig, jag är bara så jävla bäst...

 

Link to comment
Share on other sites

Guest PLEASE_DELETE_ME

Tackar för din mycket välformulerade hjälp, jag har lyckats få allting att fungera som jag vill tack vare dina svar.

 

2 poäng till dig :)

 

={Dionne}=

 

Link to comment
Share on other sites

Magnus Gladh

Tack tack...

 

- Magnus

-----------------------------------------------------

Jag är inte kaxig, jag är bara så jävla bäst...

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...