Title: Nachricht
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


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


Antwort per Email an