Danke!
Deine
Version funzt.
Keine
? mehr.
Gruss
Jan
-----Urspr�ngliche
Nachricht-----
Von: Steffen Kangowski [mailto:[EMAIL PROTECTED]]
Gesendet: Dienstag, 24. September 2002 11:07
An: ActiveServerPages German
Betreff: [aspgerman] Antwort: Problem mit BASIC Authentifikation
Von: Steffen Kangowski [mailto:[EMAIL PROTECTED]]
Gesendet: Dienstag, 24. September 2002 11:07
An: ActiveServerPages German
Betreff: [aspgerman] Antwort: Problem mit BASIC Authentifikation
Hallo,
ichh hatte mal darauf hingewiesen, dass die Base64 Codierung/Decodierung in dem Bsp. fehlerhaft war.
Ob sie inzwischen korregiert worden ist wei� ich aber nicht trotzdem hier als Dienstag-Morgen-Geschenk die von mir seit langem erfolgreich eingesetzten Alternativen...
Vielleicht hilft es ja...
' -------------------------------------------------------------------------------------------------------------
' Base64encode
' -------------------------------------------------------------------------------------------------------------
Function base64Encode(ByVal plain)
Dim ret, ndx, by3, FirstByte, SecondByte, ThirdByte, idx, Base64EncMap(63), Base64DecMap(127)
Const BASE_64_MAP_INIT = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
For idx = 0 To Len(BASE_64_MAP_INIT) - 1
Base64EncMap(idx) = mid(BASE_64_MAP_INIT, idx + 1, 1)
Next
For idx = 0 To Len(BASE_64_MAP_INIT) - 1
Base64DecMap(ASC(Base64EncMap(idx))) = idx
Next
If Len(plain) = 0 Then
base64Encode = ""
Exit Function
End If
by3 = (len(plain) \ 3) * 3
ndx = 1
Do While ndx <= by3
FirstByte = asc(mid(plain, ndx+0, 1))
SecondByte = asc(mid(plain, ndx+1, 1))
ThirdByte = asc(mid(plain, ndx+2, 1))
ret = ret & Base64EncMap( (FirstByte \ 4) AND 63 )
ret = ret & Base64EncMap( ((FirstByte * 16) AND 48) + ((SecondByte \ 16) AND 15 ))
ret = ret & Base64EncMap( ((SecondByte * 4) AND 60) + ((ThirdByte \ 64) AND 3 ))
ret = ret & Base64EncMap( ThirdByte AND 63)
ndx = ndx + 3
Loop
If by3 < len(plain) Then
FirstByte = asc(mid(plain, ndx+0, 1))
ret = ret & Base64EncMap( (FirstByte \ 4) AND 63 )
If (len(plain) MOD 3 ) = 2 Then
SecondByte = asc(mid(plain, ndx+1, 1))
ret = ret & Base64EncMap(((FirstByte * 16) AND 48) + ((SecondByte \ 16) AND 15 ))
ret = ret & Base64EncMap(((SecondByte * 4) AND 60))
Else
ret = ret & Base64EncMap((FirstByte * 16) AND 48)
ret = ret & "="
End If
ret = ret & "="
End If
base64Encode = ret
End Function
' -------------------------------------------------------------------------------------------------------------
' Base64decode
' -------------------------------------------------------------------------------------------------------------
Function base64Decode(ByVal scrambled)
Dim realLen, ret, ndx, by4, FirstByte, SecondByte, ThirdByte, FourthByte, idx, Base64EncMap(63), Base64DecMap(127)
Const BASE_64_MAP_INIT = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
For idx = 0 To Len(BASE_64_MAP_INIT) - 1
Base64EncMap(idx) = mid(BASE_64_MAP_INIT, idx + 1, 1)
Next
For idx = 0 To Len(BASE_64_MAP_INIT) - 1
Base64DecMap(ASC(Base64EncMap(idx))) = idx
Next
If Len(scrambled) = 0 Then
base64Decode = ""
Exit Function
End If
realLen = Len(scrambled)
Do While Mid(scrambled, realLen, 1) = "="
realLen = realLen - 1
Loop
ret = ""
by4 = (realLen \ 4) * 4
ndx = 1
Do While ndx <= by4
FirstByte = Base64DecMap(asc(mid(scrambled, ndx+0, 1)))
SecondByte = Base64DecMap(asc(mid(scrambled, ndx+1, 1)))
ThirdByte = Base64DecMap(asc(mid(scrambled, ndx+2, 1)))
FourthByte = Base64DecMap(asc(mid(scrambled, ndx+3, 1)))
ret = ret & chr(((FirstByte * 4) AND 255) + ((SecondByte \ 16) AND 3))
ret = ret & chr(((SecondByte * 16) AND 255) + ((ThirdByte \ 4) AND 15))
ret = ret & chr(((ThirdByte * 64) AND 255) + (FourthByte AND 63))
ndx = ndx + 4
Loop
If ndx < realLen Then
FirstByte = Base64DecMap(asc(mid(scrambled, ndx+0, 1)))
SecondByte = Base64DecMap(asc(mid(scrambled, ndx+1, 1)))
ret = ret & chr( ((FirstByte * 4) AND 255) + ((SecondByte \ 16) AND 3))
If realLen MOD 4 = 3 Then
ThirdByte = Base64DecMap(asc(mid(scrambled,ndx+2,1)))
ret = ret & chr(((SecondByte * 16) AND 255) + ((ThirdByte \ 4) AND 15))
End If
End If
base64Decode = ret
End Function
herzliche Gr��e
Steffen Kangowski, Projekte
Lecloux MediaSolutions GmbH,
Karl-Liebknecht-Strasse 29, 10178 Berlin, Germany
http://www.one2publish.de, http://www.lecloux.de
Office phone +49 (30) 2327 6721,
Fax: +49 (30) 2327 6711,
Mobil: +49 (170) 1682779
Email: mailto:[EMAIL PROTECTED]
"Jan Goerich" <[EMAIL PROTECTED]> 24.09.2002 10:17
Bitte antworten an "ActiveServerPages German"
An: "ActiveServerPages German" <[EMAIL PROTECTED]>
Kopie:
Thema: [aspgerman] Problem mit BASIC Authentifikation
Tach sch�n!
Ich muss BASIC Authentifikation zum Login verwenden, damit sich Benutzer
�ber einen Portal-Server an einer ASP-App. anmelden k�nnen. Also ein
Single-Sign On. Der User meldet sich am Portal an, wird gegen eine
interne LDAP-DB gescheckt und hat damit die M�glichkeit auf alle
m�glichen Intranetanwendungen ohne weitere Anmeldung zu zugreifen. Der
Portal-Server sendet eine Anforderung und erh�lt einen 401-Response
zur�ck. Daraufhin sendet der Portalserver die Login Daten �ber die BASIS
Authentifizierung.
Die will ich auslesen und �ber ADSI wiederum an der LDAP-DB checken.
Christoph hat sich gl�cklicherweise schonmal Gedanken gemacht (Danke
Christoph!), so dass ich die "ASP-basierte BASIS Authentifizierung"
(http://www.aspheute.com/artikel/20010521.htm) benutze, die die
Authentifizierung gegen Windows-Benutzer umgeht. Damit habe ich die
M�glichkeit innerhalb einer ASP-Seite die Login-Daten auszulesen, nach
ASCII zu Encoden und dann gegen LDAP-Abzuchecken.
Alles sch�n und gut, aber bei bestimmten Nutzern, h�ngt trotz Eingabe
ohne "?" am Passwort, auf einmal ein "?". Damit ist der Login nat�rlich
futsch, der User/das Portal kommt nicht in die ASP-App.. Es ist egal in
welchem Browser ich das Skript teste. Auch unter welchem IIS (unter V5.1
l�uft es eh nicht -> Serverfehler). Hat jemand eine Idee?
Komisch ist auch, dass das gleiche Passwort bei einem User funktioniert
und bei einem anderen wiederum nicht. So funzt die frei erfundene, aber
getestete, Kombination "jgoerich:jever" nicht. Die Kombination
"mraabe:jever" funzt jedoch.
Kann es sein, dass das Protokoll/das Decoding den String auff�llt und
des wegen ein "?" erscheint.
Gruss
Jan
G�rich
P.S.:Oder ist es ein Zeichen Gottes, das ich mich was Fragen soll ;-).
--
SHE Informationstechnologie AG
Ludwigshafen/Rh.
| [aspgerman] als [EMAIL PROTECTED] subscribed
| http://www.aspgerman.com/archiv/aspgerman/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspgerman.asp
| [aspgerman] als [EMAIL PROTECTED] subscribed | http://www.aspgerman.com/archiv/aspgerman/ = Listenarchiv | Sie k�nnen sich unter folgender URL an- und abmelden: | http://www.aspgerman.com/aspgerman/listen/anmelden/aspgerman.asp
| [aspgerman] als [email protected] subscribed | http://www.aspgerman.com/archiv/aspgerman/ = Listenarchiv | Sie k�nnen sich unter folgender URL an- und abmelden: | http://www.aspgerman.com/aspgerman/listen/anmelden/aspgerman.asp
