Wir erstellen eine Anwendung mit folgenden technischen Daten entschieden.OAuth 2.0 mit Implict Grant-Typ Spring-Boot-App
- Angular 4/5 [Front End]
- SpringBoot Rahmen [BackEnd]
- OAuth 2.0 [Berechtigung]
- MySQL [Datenbank]
Hinweis: Wir selbst haben Resource Server, Authorization Server
Fluss
Wir bieten eine einzelne Instanz Anwendung für mehrere Clients [unsere Kunden], die ihre eigenen Nutzer haben wird. Jeder Benutzer erhält eine E-Mail, um über unsere Anwendung ein paar Dinge für seine jeweiligen Kunden zu autorisieren. Der E-Mail-Link enthält client_id, record_id verschlüsselt und codiert. Wenn der Benutzer auf den Link klickt, sollte er zu AuthServer gehen, den Client über seine client_id autorisieren und das Token an den Benutzeragenten zurückgeben, um weitere Operationen auszuführen.
Wir gingen durch diese Github repo und implementiert das gleiche wie das Beispiel.
Der AuthServer Configure
Code ist wie folgt:
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.inMemory().withClient("my-trusted-client")
.authorizedGrantTypes("password", "authorization_code",
"refresh_token", "implicit")
.authorities("ROLE_CLIENT", "ROLE_TRUSTED_CLIENT")
.scopes("read", "write", "trust").resourceIds("sparklr")
.accessTokenValiditySeconds(60).and()
.withClient("my-client-with-registered-redirect")
.authorizedGrantTypes("authorization_code").authorities("ROLE_CLIENT")
.scopes("read", "trust").resourceIds("sparklr")
.redirectUris("http://anywhere?key=value").and()
.withClient("my-client-with-secret")
.authorizedGrantTypes("client_credentials", "password")
.authorities("ROLE_CLIENT").scopes("read").resourceIds("sparklr")
.secret("secret");
}
Wir haben einige Zweifel an den Werten der configure-Methode übergeben.
- Was steht hier für
.inMemory().withClient("my-trusted-client")
? Wird dies immer fest codiert sein? Da wir jeden Client basierend auf der erhaltenen client_id validieren würden, wo werden wir diesen füttern, um ihn dynamisch zu validieren? - Was ist
.withClient("my-client-with-registered-redirect")
für? Auch das bleibt für jeden Kunden gleich? - Der Autor im Repo hat auch gesagt, dass wir das Setup über
$ curl -H "Accept: application/json" my-client-with-secret:[email protected]:8080/oauth/token -d grant_type=client_credentials
validieren können und ich sehemy-client-with-secret:secret
hier übergeben. Wenn dies für verschiedene Kunden geändert werden wird, wie kann ich diesen Wert geben.withClient("my-client-with-secret")
und.secret("secret")
Wir sind total harte Zeit, diese Konzepte zu verstehen. Unsere Anforderung ist einfach, Wir werden jeden Client mit client_id validieren und ein Token für diesen Client generieren. Müssen wir andere Grant_types
für diese Art von Anforderungen haben?
Jemand bitte zeigen Sie uns in die richtige Richtung.
Danke so viel .. Es meisten der Zweifel gelöscht ... :) –