身份服务器端点 OIDC
Identity Server Endpoints OIDC
我正在使用身份服务器并将其托管在 IIS 下。直接托管在 http://localhost:44431
下时运行良好
第 1 步: 调用 http://localhost:44431/account/login?returnUrl=/connect/authorize/login?respone_type...
第 2 步: 然后转到授权端点和 return 令牌
在 localhost\id 下托管的问题:
但是,当我在 IIS 上将应用程序部署在默认网站 localhost\id
下时。它停止工作。
第 1 步: 调用 http://localhost/id/account/login?returnUrl=/connect/authorize/login?respone_type...
>> 检查请求 Headers:
>> 响应Header:
>> 在 http://localhost/id/.well-known/openid-configuration
打开 Id 配置
"authorization_endpoint":"http://localhost/id/connect/authorize",
步骤 2: 调用 /connect/authorize
端点:
>> 检查 Headers:
它不包含 id
虚拟目录,这就是它失败的原因。在这个过程中我必须在哪里解决这个问题?
我无法重现您的问题,但我确实从头开始在 IIS 中托管 IdentityServer4。我遵循的设置步骤如下。
- 克隆IdentityServer4.Samples。启动 Quickstarts/3_ImplicitFlowAuthentication 解决方案:
https://github.com/IdentityServer/IdentityServer4.Samples/tree/release/Quickstarts/3_ImplicitFlowAuthentication
- 在 IIS 中创建了一个应用程序,路径为“/id”,AppPool 设置为 'No Managed Code'
- 运行 'dotnet publish' 在 IdentityServer4 项目上并将输出移动到 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-configuration 页面检查 IdentityServer 是否正在输出正确的路径:http://localhost/id/.well-known/openid-configuration
您 运行 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
希望对您有所帮助!请告诉我
我正在使用身份服务器并将其托管在 IIS 下。直接托管在 http://localhost:44431
第 1 步: 调用 http://localhost:44431/account/login?returnUrl=/connect/authorize/login?respone_type... 第 2 步: 然后转到授权端点和 return 令牌
在 localhost\id 下托管的问题:
但是,当我在 IIS 上将应用程序部署在默认网站 localhost\id
下时。它停止工作。
第 1 步: 调用 http://localhost/id/account/login?returnUrl=/connect/authorize/login?respone_type...
>> 检查请求 Headers:
>> 响应Header:
>> 在 http://localhost/id/.well-known/openid-configuration
打开 Id 配置 "authorization_endpoint":"http://localhost/id/connect/authorize",
步骤 2: 调用 /connect/authorize
端点:
>> 检查 Headers:
它不包含 id
虚拟目录,这就是它失败的原因。在这个过程中我必须在哪里解决这个问题?
我无法重现您的问题,但我确实从头开始在 IIS 中托管 IdentityServer4。我遵循的设置步骤如下。
- 克隆IdentityServer4.Samples。启动 Quickstarts/3_ImplicitFlowAuthentication 解决方案: https://github.com/IdentityServer/IdentityServer4.Samples/tree/release/Quickstarts/3_ImplicitFlowAuthentication
- 在 IIS 中创建了一个应用程序,路径为“/id”,AppPool 设置为 'No Managed Code'
- 运行 'dotnet publish' 在 IdentityServer4 项目上并将输出移动到 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-configuration 页面检查 IdentityServer 是否正在输出正确的路径:http://localhost/id/.well-known/openid-configuration
您 运行 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
希望对您有所帮助!请告诉我