wake-up-neo.com

Der IdentityServer-Fehler "invalid_client" wurde immer zurückgegeben

Ich versuche, IdentityServer3 zu verwenden, weiß aber nicht, warum ich immer den Fehler "invalid_client" erhalte, egal was ich tue.

Dies ist der Code, den ich verwende:

//Startup.cs (Auth c# project)
public void Configuration(IAppBuilder app) {
    var inMemoryManager = new InMemoryManager();
    var factory = new IdentityServerServiceFactory()
        .UseInMemoryClients(inMemoryManager.GetClients())
        .UseInMemoryScopes(inMemoryManager.GetScopes())
        .UseInMemoryUsers(inMemoryManager.GetUsers());

    var options = new IdentityServerOptions {
        Factory = factory,
        RequireSsl = false
    };

    app.UseIdentityServer(options);
}

InMemoryManager-Hilfsprogramm.

//InMemoryManager.cs
public class InMemoryManager {
    public List<InMemoryUser> GetUsers() {
        return new List<InMemoryUser> {
            new InMemoryUser {
                Username = "alice",
                Password = "password",
                Subject = "2",
                Claims = new [] {
                    new Claim("User name", "Alice")
                }
            }
        };
    }

    public IEnumerable<Scope> GetScopes() {
        return new[] {
            new Scope {
                Name = "api1",
                DisplayName = "API 1"
            }
        };
    }

    public IEnumerable<Client> GetClients() {
        return new[] {
            new Client {
                ClientName = "Silicon on behalf of Carbon Client",
                ClientId = "carbon",
                Enabled = true,
                //AccessTokenType = AccessTokenType.Reference,

                Flow = Flows.ResourceOwner,

                ClientSecrets = new List<Secret> {
                    new Secret("secret".Sha256())
                },

                AllowedScopes = new List<string> {
                    "api1"
                }
            }
        };
    }
}

Das ist das Ergebnis, das ich immer bekomme.

 Postman error

Ich benutze Briefträger, um den Auth-Server zu testen, aber ich erhalte immer diesen Fehler. Ich habe eine andere Lösung gelesen, aber keine scheint zu funktionieren. Ich weiß nicht, was ich noch versuchen soll.

Prost.

10
arosgab

Ihre Anfrage sollte wie folgt lauten:

  1. Berechtigungskopf mit clientId/clientSecret. carbon/secret in Ihrem Fall. 1
  2. In Körper. username/password sollte in Ihrem Fall alice/password sein. Wenn Sie keine Token aktualisieren müssen, können Sie den Bereich offline_access von der Anforderung ausschließen. 2
1
Artem

Fügen Sie einfach das client_secret: secret in Ihren Body ein. Es wird klappen!

 enter image description here

Späte Antwort, aber für mich geschah dies nach dem IdentityServer 4-Tutorial, als ich versuchte, mich mit einem Benutzernamen und einem Passwort anzumelden. Ich habe den Code aus dem ersten Tutorial verwendet (mit Client-Anmeldeinformationen) und den Client so geändert, dass er Passwörter verwendet. Danach bekam ich immer wieder diesen Fehler.

Um dies zu beheben, setzen Sie im IdentityServer-Projekt config.cs In der GetClients -Methode AllowedGrantTypes auf GrantTypes.ResourceOwnerPassword Und ändern Sie ClientId von client bis ro.client (oder wie auch immer der Clientname lautet, den Sie in der Datei program.cs des Client-Projekts verwenden).

0
yesman