Asp.net mvc 身份服务器端点OIDC

Asp.net mvc 身份服务器端点OIDC,asp.net-mvc,iis,asp.net-core,identityserver3,identityserver4,Asp.net Mvc,Iis,Asp.net Core,Identityserver3,Identityserver4,我正在使用Identity server并将其托管在IIS下。当直接在http://localhost:44431 第1步:呼叫。。。。 步骤2:然后它转到授权端点并返回令牌 本地主机下的问题主机\id: 但是,当我将应用程序作为localhost\id部署到默认网站下的IIS上时。它停止工作了 第1步:呼叫 >>检查请求头: >>响应标题: >>在打开Id配置 步骤2:调用/connect/authorize端点: >>检查标题: 它没有包含id虚拟目录,这就是它失败的原因。在这个过程中

我正在使用Identity server并将其托管在IIS下。当直接在
http://localhost:44431

第1步:呼叫。。。。 步骤2:然后它转到授权端点并返回令牌

本地主机下的问题主机\id:

但是,当我将应用程序作为
localhost\id
部署到默认网站下的IIS上时。它停止工作了

第1步:呼叫

>>检查请求头:

>>响应标题:

>>在打开Id配置

步骤2:调用
/connect/authorize
端点:

>>检查标题:


它没有包含
id
虚拟目录,这就是它失败的原因。在这个过程中,我要在哪里解决这个问题

我无法重现您的问题,但我确实从头开始在IIS中托管IdentityServer4。下面是我为安装所遵循的步骤

  • 克隆的IdentityServer4.Samples。启动QuickStart/3\u隐式流身份验证解决方案:
  • 在IIS中创建了一个应用程序,路径为“/id”,应用程序池设置为“无托管代码”
  • 在IdentityServer4项目上运行“dotnet publish”,并将输出移动到IIS应用程序根目录的文件夹中
  • 将MvcClient项目中的权限URL更改为指向localhost/id

    app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
    {
        AuthenticationScheme = "oidc",
        SignInScheme = "Cookies",
        Authority = "http://localhost/id",
        RequireHttpsMetadata = false,
        ClientId = "mvc",
        SaveTokens = true
    });
    
  • 加载MvcClient应用程序并使用“Authorize”筛选器导航到路由。使用适当的虚拟目录正确执行重定向

  • 转到openid配置页面,检查IdentityServer是否输出了正确的路径:

    您是否在同一项目中运行IdentityServer4和MVC应用程序?如果是,您是否使用OpenIdConnectOptions.Authority属性的相对路径?尝试将其更改为绝对路径,看看这是否解决了问题。我认为可能是这样,因为您的请求URL在重定向uri中不包含/id路径:

    http://localhost/id/account/login?**returnUrl=/connect/authorize/login**?respone_type
    
    当然,正确的路径应该是:

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

    希望这有帮助!请让我知道

    开放ID配置正常。我不是在同一个项目中使用MVC应用程序,而是在不同的应用程序中使用angular2项目。但我正在从URL测试它,而不考虑其他应用程序,只需将它放在URL中。我将通过安装一个新的副本来再次复制它。那么你是手工创建那个URL吗?如果是这样,那么我在底部的建议应该可以解决这个问题——如果你在同一个域中,你仍然需要在前面的/I'd。如果跨越域,则需要是包含/id的绝对路径
    http://localhost/id/account/login?**returnUrl=/id/connect/authorize/login**?respone_type