2017-09-24 7 views
1

Ich habe versucht, die einfachsten Beispiele von IdentityServer4 zum Anfordern von Zugriff in reinem Code dahinter zu arbeiten. Ich kann ein Zugriffstoken erhalten, wenn eine Client-Anforderung verwenden, aber nicht, wenn eine Benutzeranmeldung zu tun ..IdentityServer4 unsupported_grant_type Fehler

var discos = new DiscoveryClient(authority); 
     var disco = await discos.GetAsync(); 

     if (disco.IsError) 
     { 
      Console.WriteLine(disco.Error); 
      return null; 
     } 

     var tokenClient = new TokenClient(disco.TokenEndpoint, "ro.client", "secret"); 

     var tokenResponse = await tokenClient.RequestResourceOwnerPasswordAsync("username", "password", "api1"); 

Dies ist der Client, der die Anforderung unter Verwendung von Benutzerdaten. ich einen ewigen unsupported_grant_type ..

Der Server es Setup hat als:

new Client 
      { 
       ClientId = "ro.client", 
       AllowedGrantTypes = GrantTypes.ResourceOwnerPassword, 

       ClientSecrets = 
       { 
        new Secret("secret".Sha256()) 
       }, 
       AllowedScopes = { "api1" } 
      } 

Kann jemand bitte identifizieren, was Im mierung. Benutzer können sich über die Front-End-Schnellstart-Benutzeroberfläche anmelden, die die Software anbietet, und dies ist in der Funktionalität integriert. Warum wird es nicht funktionieren, wenn das Unternehmen gültig ist?

+1

Verwenden Sie In-Memory-Benutzer? –

+1

Überprüfen Sie die Protokolle ... – leastprivilege

Antwort

0

nun gelöst zu übergeben. Ich habe es geschafft, das funktioniert mit einer neueren Version des Nugget-Pakets so möglicherweise einige Konflikte mit dem, was ich gelesen habe und alten Anforderungen.

Für ref Ich habe die Arbeit mit Demo-Server, API und Konsolen-Client auf Github hochgeladen: https://github.com/PheonixProject/IdentityServer4Demo

1

Ihr ClientSecrets ist für das Sha256 von "secret" nicht die literale Zeichenfolge "secret" konfiguriert.

Aktualisieren Sie Ihre tokenClient die Sha256 von „geheimen“ anstelle der Zeichenkette „Geheimnis“

var tokenClient = new TokenClient(disco.TokenEndpoint, "ro.client", "secret".Sha256()); 
Verwandte Themen