OAuth 2.0 ist eine Lizenzvereinbarung für Industriequalität. OAuth 2.0 wird von OAuth 1.0 geerbt, das 2006 erstellt wurde. OAuth 2.0 hilft Entwicklern dabei, die Autorisierung zu vereinfachen und spezifische Autorisierungsprozesse für Webanwendungen, Desktop -Anwendungen, mobile Anwendungen und eingebettete Anwendungen bereitzustellen.
OAuth 2.0 ist das branchenabhängige Protokoll für die Autorisierung. OAuth 2.0 ersetzt die Arbeiten des ursprünglichen OAuth -Protokolls, das 2006 erstellt wurde. OAuth 2.0 konzentriert sich auf die Einfachheit des Kundenentwicklers und bietet gleichzeitig spezifische Autorisierungsströme für Webanwendungen, Desktop -Anwendungen, Mobiltelefone und Wohnzimmergeräte.
Vier Zeichen von OAuth 2.0
Nehmen Sie zum einfachen Verständnis das häufig verwendete WeChat -Login als Beispiel
Ressourcenbesitzer
Der Ressourcenbesitzer, die persönlichen Informationen, die von jedem Benutzer, der dem WeChat entspricht, auf WeChat festgelegt wird, gehört jedem Benutzer und gehört nicht zu Tencent.
Ressourcenserver
Ressourcenserver sind im Allgemeinen REST -APIs für einige Vorgänge von Benutzerdaten (Hinzufügung, Löschen, Änderungen und Suche), wie z. B. die Schnittstelle von WeChat, um Benutzer grundlegende Informationen zu erhalten.
Client -Anwendung
Clients von Drittanbietern, im Vergleich zu den von verschiedenen WeChat-öffentlichen Konten entwickelten Anwendungen können Drittanbieter-Anwendungen auf die Rest-API des Ressourcenservers zugreifen, nachdem sie vom Authentifizierungsserver autorisiert wurden, um grundlegende Informationen wie Benutzer Avatar, Geschlecht, Region usw. zu erhalten.
Autorisierungsserver
Authentifizieren Sie den Server, um zu überprüfen, ob der Drittanbieter-Client legal ist. Wenn es legal ist, geben Sie dem Kunden ein Token aus, und der Dritte verwendet das Token, um die API des Ressourcenservers aufzurufen.
Vier Autorisierungsmethoden (Zuschusstyp)
Anthorisierung_Code
Autorisierungscode -Typ, anwendbar für die Anwendung von Webserver. Der Modus lautet: Der Client ruft zunächst/oAuth/autorisieren/um die Benutzerautorisierungsschnittstelle ein und gibt Code nach der Benutzerautorisierung zurück, und der Client erhält dann den Zugriffstoken gemäß Code und AppSecret.
Implizit vereinfacht den Typ und es gibt weniger Schritte, um den Autorisierungscode zu erhalten als der Autorisierungscode -Typ. Nachdem die Client -Anwendung autorisiert wurde, platziert der Authentifizierungsserver das Zugriffstoken direkt auf der URL des Clients. Der Kunde analysiert die URL, um das Token zu erhalten. Diese Methode ist eigentlich nicht sehr sicher, und Sie können HTTPS Secur -Kanäle verwenden und die Gültigkeitszeit von Zugangstoken verkürzen, um das Risiko zu verringern.
Passwort
Kennworttyp, Client -Anwendung erhält Zugriffstoken über Benutzername und Passwort. Es eignet sich für Ressourcenserver, Authentifizierungsserver und Clients über eine vollständige Vertrauensbeziehung, da der Benutzer den Benutzernamen und das Kennwort des Benutzers direkt an die Client -Anwendung senden möchte. Die Client -Anwendung erhält das Token über den vom Benutzer gesendeten Benutzernamen und Kennwort und greift dann auf die Ressourcenserverressourcen zu. Zum Beispiel kann sich Alipay direkt mit Taobao Benutzername und Passwort anmelden, da sie zu demselben Unternehmen gehören und sich voll und ganz gegenseitig vertrauen.
client_credentials
Der Client -Typ ist ein Weg, der keine Benutzerbeteiligung erfordert und zum Docken zwischen verschiedenen Diensten verwendet wird. Beispielsweise muss die Anwendung, die Sie selbst entwickeln, den Dienst des SMS -Verifizierungscode -Dienstanbieters anrufen, den Dienst des Kartendienstanbieters anrufen und den Dienst des Mobiltelefonnachricht -Push -Serviceanbieters anrufen. Wenn Sie den Dienst anrufen müssen, können Sie die vom Dienstanbieter angegebene App -ID und Appsecret direkt verwenden, um das Token zu erhalten. Nachdem Sie das Token erhalten haben, können Sie den Service direkt anrufen.
Andere Konzepte
erreichen
Manchmal sind der Ressourcenserver und der Authentifizierungsserver zwei verschiedene Anwendungen. Manchmal befinden sich der Ressourcenserver und der Authentifizierungsserver in derselben Anwendung. Der Unterschied besteht darin, ob der Ressourcenserver die Gültigkeit des Tokens überprüfen muss. Ersteres muss überprüfen, wie letztere dies nicht tun. Letzteres wird hier implementiert.
Anwendungssicherheitskonfiguration
@ConfigurationPublic Class SecurityConfiguration erweitert WebSecurityConFigurerAdapter {@Override Protected void configure (httpecurity http) Ausnahme {http.formlogin () .and (). } @Override public void configure (WebSecurity Web) löst eine Ausnahme aus {Super.Configure (Web); } @Override Protected void configure (AuthenticationManagerBuilder Auth) löst Ausnahme aus {auth.inMemoryAuthentication (). Withuser ("lyt"). Passwort ("lyt"). Autoritäten ("rollen_user") .and (). Withuser ("admin". Passwort ("admin". } @Bean @Override public AuthenticationManager AuthenticationManagerBean () löst Ausnahme aus {return Super.authenticationManagerBean (); }}Authentifizierungsserverkonfiguration
@EnableAuthorizationServer @configurationPublic Class AutorizationServerConfiguration erweitert die AutorisierungserverConFigurerAdapter (@Override public void configure (ClientDetailsServiceConFigurer Clients) ausnahmsweise {Clients.inMemory (). .AuthorizedGrantTypes ("Authorization_Code", "Passwort", "implizit", "client_credentials");} @Override public void configure (autorisierungsversucheConfigurer Sicherheit) löst Ausnahme {Super.configure (Sicherheit) aus; } @Override public void configure (autorisierungserverendpointsconFigurer -Endpunkte) löst Ausnahme aus {Endpoints.AuthenticationManager (AuthenticationManager); } @Autowired @Qualifier ("AuthenticationManagerBean") private AuthenticationManager AuthenticationManager;}Ressourcenserverkonfiguration
@EnableGlobalMethodSecurity (preposternabled = trued)@enablerSourceserver@configurationPublic class ResourceserverConfiguration erweitert ressourcenerverconFigurerAdapter {@Override public void configure (httpsecurity http) Ausnahme {Http.antmather ("/OHEUTH2/APISCH). .AntMatchers (httpMethod.get, "/read/**").access("#oauth2.hasscope('read ')") .antmatchers (httpMethod.post, "/write/**").access("#oAuth2.hasscope('Wite')") ")") ")") ")") ")") ")") ")") ")");) ");)");) "); }}Ressourcenserver-Filter-Ordnung-Einstellungen
Sie müssen die Filterordnung auf 3 in application.yml einstellen. Bitte beziehen Sie sich aus bestimmten Gründen im Link.
Verhindern Sie Cookie -Konflikte
Um Fehler zwischen Cookies des Authentifizierungsservers und Cookies zwischen Client und Cookies zu vermeiden, ändern Sie am besten den Cookie -Namen oder den Kontextpath fest.
prüfen
Postman bietet eine OAuth 2.0 -Authentifizierungsmethode. Sie können das Token erhalten und die Authentifizierung zur HTTP -Anforderung hinzufügen und dann die REST -API des Ressourcenservers anfordern.
Kundeninformationen
Genehmigung
Das Token erhielt
Zugriff auf die Ressourcenserver -API
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.