You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenAM 6.5与ASP.NET Core 2.1集成OIDC登录遇404错误求助

解决OpenAM 6.5与ASP.NET Core 2.1 OpenID Connect集成的404错误

看起来你在把OpenAM作为外部登录源集成到ASP.NET Core MVC应用时遇到了两个核心问题:一是OpenID Connect元数据地址返回404,二是没有跳转到预期的OpenAM XUI登录界面。我来帮你一步步排查修复:

核心问题分析

报错里的IDX20804和404提示很关键——你配置的元数据地址http://www.example.com:8080/openam/.well-known/openid-configuration在OpenAM 6.5里是不存在的。OpenAM的OpenID Connect元数据是和**Realm(领域)**绑定的,默认Realm的元数据路径不是根目录下的.well-known,而是在OAuth2的Realm路径下。

具体修复步骤

1. 修正OpenID Connect的元数据与授权地址

OpenAM 6.5中,默认Root Realm的OpenID Connect元数据地址格式是:
http://{openam-host}:{port}/openam/oauth2/realms/root/.well-known/openid-configuration

你需要更新AddOpenIdConnect中的配置:

.AddOpenIdConnect("oidc", options => {
    // 修正Authority,指向OpenAM的OAuth2 Root Realm端点
    options.Authority = "http://www.example.com:8080/openam/oauth2/realms/root";
    // 或者直接指定正确的MetadataAddress(二选一即可,推荐用Authority让框架自动推导)
    // options.MetadataAddress = "http://www.example.com:8080/openam/oauth2/realms/root/.well-known/openid-configuration";
    options.ClientId = "ASPNETClient";
    options.ClientSecret = "Pa$$w0rd";
    options.GetClaimsFromUserInfoEndpoint = true;
    options.ResponseType = "id_token";
    options.Scope.Clear();
    options.Scope.Add("openid");
    options.RequireHttpsMetadata = false;
});

2. 修复Cookie认证配置中的路径空格问题

你的Cookie配置里LoginPath和LogoutPath有多余空格,这会导致ASP.NET Core无法正确识别路径:

.AddCookie(options => {
    // 去掉路径中的空格,改为正确格式
    options.LoginPath = new PathString("/Account/Login");
    options.LogoutPath = new PathString("/Account/Logout");
})

3. 验证OpenAM端的客户端配置

确保你在OpenAM中创建的ASPNETClient客户端满足以下要求:

  • 客户端类型设置为Confidential(因为你用了ClientSecret)
  • 启用了OpenID Connect协议支持
  • 回调地址(Redirect URI)设置为你的ASP.NET应用回调地址,默认是https://localhost:44383/signin-oidc(如果修改了CallbackPath要对应调整)
  • 客户端密钥设置为Pa$$w0rd,和代码中的配置一致

4. 确认Realm配置(可选)

如果你的OpenAM客户端不是在Root Realm下创建的,要把Authority和MetadataAddress中的root替换为对应的Realm名称,比如你的Realm是myRealm,那么地址就是http://www.example.com:8080/openam/oauth2/realms/myRealm/.well-known/openid-configuration

测试验证

修改配置后重启ASP.NET Core应用,再次点击"Openam"登录按钮:

  • 现在框架会正确拉取OpenAM的OIDC元数据,不会再出现404错误
  • 会自动跳转到OpenAM的XUI登录界面http://www.example.com:8080/openam/XUI/#login/(如果Realm是Root的话)

内容的提问来源于stack exchange,提问作者Sooriya Dasanayake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:09:59