Welche technischen Details sollten Programmierer bei der Entwicklung ihres eigenen oAuth-Dienstes berücksichtigen?

8

Welche technischen Details sollten Programmierer bei der Entwicklung ihres eigenen oAuth-Dienstes berücksichtigen?

Ich habe versucht, Richtlinien herauszufinden, habe jedoch festgestellt, dass die meisten oAuthverwandten Artikel aus Verbrauchersicht diskutiert werden ( dh wie andere Dienste konsumiert werden ). Ich möchte mein eigenes oAuthSystem mit meinem Autorisierungsdienst und Ressourcendienst entwerfen . Welchen technischen Details sollte ich folgen?

Sazzad Hissain Khan
quelle
1
Die Entwicklung eines eigenen oAuth-Dienstes kann sehr komplex sein. Hängt davon ab, was Sie tatsächlich erreichen möchten und welche Authentifizierungsabläufe Sie unterstützen möchten, z. B. implizite Gewährung, Autorisierungscode usw. Wenn Sie einen der bekannten Authentifizierungsanbieter wie Azure AD, Cognito, Okta, Auth0.com usw. verwenden, wird noch viel mehr unter die Liste gestellt Kapuze. Sie implementieren nicht nur den Server, sondern auch das Client-SDK für die automatische Token-Aktualisierung usw. Vollständige Implementierung. Sie müssen mindestens die Authentifizierungsabläufe, auth2.0, das OpenID Connect-Protokoll, die Token, die Sicherheit und wahrscheinlich andere Bits kennen, die mir nicht bekannt sind.
Imran Arshad
Haben Sie darüber nachgedacht, es NICHT zu bauen? :) Scherz beiseite, ein oAuth-Service ist sehr selten Teil des Wertversprechens eines Unternehmens und noch seltener ein Differenzierungsfaktor, was impliziert, dass die meisten Unternehmen besser dran sind, eine Standardlösung zu verwenden oder zu kaufen. Das heißt natürlich nicht, dass es keine gültigen Fälle gibt, in denen so etwas geschäftlich sinnvoll wäre, aber es muss klar erklärt werden.
Savvas Kleanthous
1
@AKleanthus Ich habe den Titel aktualisiert. Ich denke, es war früher irreführend.
Sazzad Hissain Khan

Antworten:

4

Sie haben wahrscheinlich die RFCs gelesen, aber falls Sie dies nicht getan haben, sind sie der Ort, an dem Sie beginnen möchten:

  1. oAuth 2.0 "Kern" (RFCs 6749 und 6750 )
  2. Proof-Schlüssel für den Code-Austausch (PKCE) (RFC 7636 )

Die beste "verpackte" Anleitung für oAuth-Implementierer (Client oder anderweitig) ist über IETF Best Current Practices (BCPs) verfügbar. Die meisten Menschen kennen IETF-RFCs und (verwirrenderweise) BCPs werden als RFCs mit einer RFC-Nummer veröffentlicht. Trotzdem handelt es sich um Best Practices und nicht um formale Spezifikationen :

Der BCP-Prozess ähnelt dem für vorgeschlagene Standards. Das BCP wird der IESG zur Überprüfung vorgelegt, und es gilt der bestehende Überprüfungsprozess, einschließlich eines "letzten Anrufs" auf der Mailingliste der IETF-Ankündigung. Sobald das IESG das Dokument genehmigt hat, endet der Prozess und das Dokument wird veröffentlicht. Das resultierende Dokument hat die technische Genehmigung der IETF, ist es jedoch nicht und kann kein offizieller Internetstandard werden.

BCPs, die Sie überprüfen möchten:

  1. oAuth Sicherheit (aktuell zum Zeitpunkt dieses Schreibens)
  2. oAuth für browserbasierte Apps (aktuell zum Zeitpunkt des Schreibens).
  3. oAuth für native Apps (veröffentlicht 2017 als Update für "Core" oAuth 2.0 RFC, immer noch eine gute Lektüre)
  4. JSON Web Tokens für oAuth (aktuell)

Diese Dokumente sind in Form von Bedrohungsmodellen gerahmt - sie decken Angriffe (oder "Sicherheitsaspekte" als verwässertes Format) und Gegenmaßnahmen ab. Möglicherweise suchen Sie nach einer einfacheren Art von Roadmap für Bausteine, und vielleicht sollte es eine als Lehrmittel geben. Reale oAuth-Implementierungen müssen mit Anscheinsbeweisen für ein Bedrohungsmodell entwickelt werden.

Wie ein Samurai sagte : ... Schwertkunst, die im Kampf nicht getestet wurde, ist wie die Kunst, an Land zu schwimmen.

identigral
quelle
2

Es würde mich auch interessieren, warum Sie Ihre eigene Authentifizierungslösung entwickeln möchten.

Abgesehen davon gibt es ein Open-Source-Projekt, das genau das tut, was Sie verlangen - Identity Server . Sie können ihren Quellcode überprüfen oder ihn teilen und etwas darauf aufbauen.

Bitte überprüfen Sie auch die Antwort "identigral" in verschiedenen Dokumenten.

eddyP23
quelle