1

J'utilise Identity Server et je l'héberge sous IIS. Il fonctionnait très bien quand hébergé directement sous http://localhost:44431Identity Server Endpoints OIDC

Étape 1: appel http://localhost:44431/account/login?returnUrl=/connect/authorize/login?respone_type .... Étape 2: Ensuite, il va au Autorisez Endpoint et un retour d'un jeton

Probelm hébergement sous localhost \ id:

Toutefois, lorsque je déploie l'application sur IIS sous le site Web par défaut en tant que localhost\id. Ça arrête de fonctionner.

Étape 1: Appel http://localhost/id/account/login?returnUrl=/connect/authorize/login?respone_type ....

>> Controle têtes de demande:

enter image description here

>> Réponse en-tête:

enter image description here

>> Ouvrir une configuration Id à http://localhost/id/.well-known/openid-configuration

"authorization_endpoint":"http://localhost/id/connect/authorize", 

Étape 2: Appeler le point final /connect/authorize:

>> les en-têtes: Contrôle

enter image description here

Il n'a pas inclus le répertoire virtuel id, c'est pourquoi il échoue. où dans le processus je dois résoudre ce problème?

Répondre

1

Je ne parviens pas à reproduire votre problème, mais j'ai démarré à partir de zéro en hébergeant IdentityServer4 dans IIS. Les étapes que j'ai suivies pour l'installation sont ci-dessous.

  1. Cloned IdentityServer4.Samples. Lancement solution quickstarts/3_ImplicitFlowAuthentication: https://github.com/IdentityServer/IdentityServer4.Samples/tree/release/Quickstarts/3_ImplicitFlowAuthentication
  2. créé une application dans IIS avec le chemin que '/ id' avec le AppPool réglé sur 'No code managé'
  3. Ran 'dotnet publie' sur le projet IdentityServer4 et déplacé la sortie à l'application IIS le dossier racine
  4. Changé l'URL Autorité dans le projet MvcClient pour pointer vers localhost/id

    app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions 
    { 
        AuthenticationScheme = "oidc", 
        SignInScheme = "Cookies", 
        Authority = "http://localhost/id", 
        RequireHttpsMetadata = false, 
        ClientId = "mvc", 
        SaveTokens = true 
    }); 
    
  5. charge l'application MvcClient et accédez à un itinéraire avec filtre le « Autorisez ».La redirection a eu lieu avec le répertoire virtuel approprié

Vérifiez pour voir si le chemin approprié est sortie par IdentityServer en allant à la page Openid configuration: http://localhost/id/.well-known/openid-configuration

Êtes-vous en cours d'exécution IdentityServer4 et une application MVC dans le même projet? Si oui, utilisez-vous des chemins relatifs pour la propriété OpenIdConnectOptions.Authority? Essayez de le changer en un chemin absolu et voyez si cela résout le problème. Je pense que cela pourrait être le cas, parce que l'URL de votre demande ne comprend pas le chemin/id dans la redirection uri:

http://localhost/id/account/login?**returnUrl=/connect/authorize/login**?respone_type 

Le chemin correct devrait bien sûr être:

http://localhost/id/account/login?**returnUrl=/id/connect/authorize/login**?respone_type 

Hope this aide! Veuillez me le faire savoir

+0

La configuration Open ID est correcte. Je n'utilise pas une application MVC dans le même projet, c'est un projet angular2 dans une application différente. Mais je suis en train de tester cela à partir de l'URL indépendamment de l'autre application, en le plaçant simplement dans l'url. Je vais essayer de le reproduire en installant une nouvelle copie. – Coding

+1

Donc, vous faites cette URL à la main? Si c'est le cas, alors ma suggestion en bas devrait le résoudre - si vous restez sur le même domaine, vous avez toujours besoin de/I à l'avant. Si traversant des domaines, il doit être un chemin absolu comprenant le/id – kg743

+0

J'étais compliqué le probelm :). Comment ça m'a manqué? Merci Kevin ... – Coding