Je dois changer l'URL d'un point de terminaison de découverte de ceci:
app.Use(async (context, next) => { context.Request.PathBase = "/identity"; await next.Invoke(); });
en ceci:
/identity/.well-known/openid-configuration
J'essaye de déployez ID4 sur Azure Kubernetes Service. Tout fonctionne très bien lorsque je déploie ID4 à l'adresse racine (comme http: //xxxx.europe.cloudapp .azure.com ) - Je vois la page d'accueil et je peux accéder à mon point de terminaison de découverte.
Cependant, lorsque je déploie ID4 sur un sous-itinéraire ( http://xxxx.europe.cloudapp.azure.com/identity ) Je ne peux pas accéder à oidc-configuration. J'utilise la réécriture d'URL donc lorsque je clique sur le lien pour accéder au document de découverte ( http://xxxx.europe.cloudapp.azure.com/identity/.well-known/openid-configuration ) j'obtiens HTTP404.
EDIT:
quand j'ajoute:
/.well-known/openid-configuration
tous les fichiers css / js / jpeg sont chargés correctement. C'est un progrès.
Cependant lorsque je clique sur le lien visible sur une page d'accueil (( http://xxxx.europe.cloudapp.azure.com/identity/.well-known/openid-configuration ) j'obtiens HTTP404. Quand je clique sur accorde (( http://xxxx.europe.cloudapp.azure.com/identity/grants). C'est la même histoire. Supprimer manuellement "/ identity" du lien mène toujours à 404.
3 Réponses :
Vous devriez pouvoir utiliser des URI relatifs en utilisant Map
Api sur IApplicationBuilder
.
app.Map("/identity", authApp => { authApp.UseIdentityServer(); });
cela n'a pas aidé malheureusement, il renvoie toujours 404
@skyrunner Pouvez-vous essayer app.Use (async (context, next) => {context.Request.Path = "/ identity" + context.Request.Path; wait next.Invoke ();}); code>? C'est un hack, je ne sais pas si cela fonctionnera. Utilisez ce middleware avant
app.UseIdentityServer ()
.
Tout d'abord, merci pour votre aide. Cela n'a pas fonctionné aussi bien - avec ce code, même la page d'accueil n'apparaît pas. J'espérais qu'il existe peut-être une propriété IS4 avec laquelle je peux contrôler l'URL du point de terminaison de découverte. Mais je ne trouve nulle part un tel paramètre dans la documentation.
@skyrunner Il n'y a pas de propriété. Regardez ce code github.com/IdentityServer/IdentityServer4/blob/ master / src /… C'est là que j'ai eu l'idée d'utiliser Map
et de changer context.Request.Path
. Vous devriez essayer de comprendre pourquoi ce routage de point de terminaison ne fonctionne pas pour vous. Je viens d'essayer d'héberger localement sur IIS en tant qu'application Web et cela a fonctionné pour moi en utilisant Map
.
@skyrunner De plus, les autres points de terminaison fonctionnent-ils (comme la connexion / le jeton) avant d'essayer d'apporter ces modifications? Est-ce juste une page disco qui renvoie NotFound?
votre solution fonctionne en effet dans un environnement local. Jusqu'à présent, je ne peux toujours pas le forcer à fonctionner sur Azure Kubernetes Service.
app.UseHttpsRedirection()
Cela fonctionne localement de cette façon, mais cela ne fonctionne pas sur Azure Kubernetes Service pour une raison quelconque.
Grâce à Vidmantas et Mohamed répond, j'ai réussi à le faire fonctionner. J'ai utilisé leurs conseils et voici ce qui a finalement fonctionné pour moi:
app.Map("/identity", authApp => { authApp.UseStaticFiles(); authApp.UseIdentityServer(); authApp.UseMvcWithDefaultRoute(); });
D'une manière ou d'une autre, cela n'a pas fonctionné correctement sans
authApp.UseMvcWithDefaultRoute ();
J'ai eu quelques problèmes dans la configuration de ma passerelle istio. Après les avoir résolus, IS4 fonctionne comme un charme dans un sous-itinéraire. Merci les gars pour vos réponses.
j'ai essayé ma mise à jour