2017-10-03 6 views
0

Ich kann nicht zu verstehen scheinen, warum bekomme ich unauthorized_client von Identityserver. Ich benutze oidc-client mit Angular 4 ui und asp.net Kern der Web-APIs. Ich kann keine Verbindung zum Identitätsserver herstellen, da jedes Mal, wenn mein Client zurückgegeben wird, unauthorized_client ist.Identityserver impliziter Fluss unauthorized_client

Dies ist der registrierte Kunde:

new Client 
{ 
    ClientId = "EStudent", 
    ClientName = "EStudent", 
    AllowedGrantTypes = GrantTypes.Implicit, 
    RequireClientSecret = false, 
    AllowAccessTokensViaBrowser = true, 
    AllowedCorsOrigins = { "http://localhost:63150" }, 
    LogoutSessionRequired = false, 
    RequireConsent = false, 
    AllowedScopes = new List<string> 
    { 
     IdentityServerConstants.StandardScopes.OpenId, 
     IdentityServerConstants.StandardScopes.Profile, 
     "UsersAPI", 
    }, 
    AlwaysIncludeUserClaimsInIdToken = true, 
    RedirectUris = { 
     "http://localhost:63150/oauth.html" 
    }, 
    PostLogoutRedirectUris = { 
     "http://localhost:63150/", 
     $"{this._baseAddress}/index.html" 
    }, 
    AllowOfflineAccess = true, 
} 

Dies ist der Auth-Service in Angular ist:

import { Injectable, EventEmitter } from '@angular/core'; 
import { Http, Headers, RequestOptions, Response } from '@angular/http'; 
import { Observable } from 'rxjs/Rx'; 

import { UserManager, User } from 'oidc-client'; 
import { environment } from '../../../environments/environment'; 

const settings: any = { 
    authority: 'http://localhost:8200/oauth', 
    client_id: 'EStudent', 
    redirect_uri: 'http://localhost:63150/auth.html', 
    post_logout_redirect_uri: 'http://localhost:63150/index.html', 
    response_type: 'id_token token', 
    scope: 'openid profile UsersAPI', 

    silent_redirect_uri: 'http://localhost:63150/silent-renew.html', 
    automaticSilentRenew: true, 
    accessTokenExpiringNotificationTime: 4, 
    // silentRequestTimeout:10000, 

    filterProtocolClaims: true, 
    loadUserInfo: true 
}; 

@Injectable() 
export class AuthService { 
    mgr: UserManager = new UserManager(settings); 
    userLoadededEvent: EventEmitter<User> = new EventEmitter<User>(); 
    currentUser: User; 
    loggedIn = false; 
    authHeaders: Headers; 

    constructor(private http: Http) { 
     this.mgr.getUser().then((user) => { 
      if (user) { 
       this.loggedIn = true; 
       this.currentUser = user; 
       this.userLoadededEvent.emit(user); 
      } else { 
       this.loggedIn = false; 
      } 
     }).catch((err) => { 
      this.loggedIn = false; 
     }); 

     this.mgr.events.addUserLoaded((user) => { 
      this.currentUser = user; 
      this.loggedIn = !(user === undefined); 
      if (!environment.production) { 
       console.log('authService addUserLoaded', user); 
      } 
     }); 

     this.mgr.events.addUserUnloaded((e) => { 
      if (!environment.production) { 
       console.log('user unloaded'); 
      } 
      this.loggedIn = false; 
     }); 
    } 
} 

Und schließlich mache ich den Aufruf wie folgt identityserver:

constructor(public oidcSecurityService: AuthService) { } 

ngOnInit() { 
    this.oidcSecurityService.mgr.signinRedirect(); 
} 

Die Anfrage, die gesendet wird, sieht so aus: http://localhost:8200/oauth/connect/authorize?client_id=EStudent&redirect_uri=http%3A%2F%2Flocalhost%3A63150%2Fauth.html&response_type=id_token%20token&scope=openid%20profile%20UsersAPI&state=91ea5de6886a49a997704bbdb4beda0c&nonce=295e6bf737274ea18ee2f575c93d150b

+0

markiere es als geantwortet bitte – MJK

Antwort

3

Ihre IdentityServer Client eine redirectUri hat, die nicht überein in der Anforderung verwendet wird:

http://localhost:63150/oauth.html 

In dem Antrag verwenden Sie:

http://localhost:63150/auth.html 

Notiere die fehlende o.

+0

Konnte nicht stupider werden als das ... Danke für das Hinzeigen, ich werde heute Abend versuchen, wenn das der einzige Fehler ist. –

Verwandte Themen