2017-11-16 2 views
2

Wir haben ein Projekt in Entwicklung, das Azure AD B2C ausschließlich zur Authentifizierung von Benutzern verwendet. Ich bin gerade dabei, eine Dokumentation darüber zu erstellen, wie der Login-Flow funktioniert, indem ich ihn in Fiddler nachverfolge.Azure AD B2C - Wie wird Benutzername/Passwort für id_token ausgetauscht?

Für einen Benutzer, der seinen Benutzernamen und Passwort richtig an das Formular von login.microsoftonline.com übermittelt, verstehe ich, dass sie ein ID_Token als Antwort erhalten, die sie dann auf unserer Website präsentieren, um ihre Authentifizierung zu validieren und eine Sitzung einzurichten .

In Fiddler, sehe ich die POST zu ourtenant.onmicrosoft.com, die den richtigen Benutzernamen und das Passwort enthält. Der Antworttext ist "{" status ":" 200 "}" mit einer Menge von Set-Cookie-Headern (der Inhalt wurde aus Platzgründen weggelassen).

x-ms-cpim-slice 
x-ms-cpim-dc 
x-ms-cpim-cache 
x-ms-cpim-trans 

Im Anschluss daran sehe ich eine GET zu ourtenant.onmicrosoft.com, die die oben Cookies enthält und ourtenant.onmicrosoft.com antwortet mit einem Klecks HTML, die die id_token in einem versteckten Feld enthält.

Meine Frage ist, in einfachen Worten, wie korreliert Azure AD B2C den korrekten Benutzernamen/Passworteintrag im ersten POST mit dem id_token, das als Antwort auf das vorangehende GET bereitgestellt wird?

Meine Rookie-Vermutung ist, dass es das x-ms-cpim-Cache-Cookie verwendet, und wenn ja, ich will nur verstehen, was es speichert und wie robust es geschützt ist.

Antwort

1

Soweit der Vertrag betrifft, Cookies sind intern B2C. Da sie vom B2C-Service generiert und konsumiert werden, kann die interne Struktur jederzeit geändert werden.

Passwörter werden in derselben Anfrage validiert, in der der Benutzer sie bereitstellt, und dann verworfen.

B2C verfolgt den Fortschritt, den ein Benutzer bei der Authentifizierung mit Cookie (s) gemacht hat. Solche Cookies sind verschlüsselt. Darüber hinaus hilft es nicht festzustellen, was in diesen Cookies enthalten ist. Heute könnte es eine GUID sein, die es B2C erlaubt, einen Zustand in einer DB zu speichern, morgen könnten es einige kurzlebige Sicherheitstoken sein.

+0

Vielen Dank für diese Antwort von einem qualifizierten Kommentator, ich bin sicher, es ist robust und ich bin nicht besonders besorgt, aber es gibt mir eine Pause zum Nachdenken. Ich sehe echte Anmeldeinformationen und ein nettes standardkonformes OAuth2-Token kommt heraus, aber die Cookie-Verwaltung in der Mitte scheint ein absichtliches Geheimnis zu sein. Ich denke B2C ist bisher großartig, aber ich bin weniger begeistert von dem Gefühl, dass Teile des Authentifizierungsflusses proprietär sind und sich jederzeit ändern können. Wenn unsere wertvollen Daten in die Cloud gelangen, vertrauen wir diesem Framework als unserem globalen Gatekeeper. – Michael12345