- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在将 ASP.NET CORE 5.0 Web 应用程序与 OKTA 集成时遇到问题。我的公司需要将所有 Web 应用程序与 OKTA 集成。我写的这个应用程序作为 Linux 容器托管在 Fargate 集群上(并将使用 Application Load Balancer + AWS 证书来使用 HTTPS)。容器在 HTTP 上运行,并由 ALB 重定向到 HTTPS。
当我访问应用程序主机名 (https://exampleapp.companyname.com) 时,它会尝试将我重定向到以下链接:
https://dev-1234567.okta.com/oauth2/default/v1/authorize?client_id=xyz&redirect_uri=http://exampleapp.companyname.com/signin-oidc&response_type=code&scope=openid profile email&code_challenge=xyz&code_challenge_method=S256&response_mode=form_post&nonce=xyz&x-client-ver=6.7.1.0
如您所见,此 redirect_uri 将我指向 http 端点,这给了我错误 400(因为在 Okta 中我没有指定 http 登录重定向 URI,只有 HTTPS)。
当我从 https://访问页面时,为什么 Okta 会尝试将我重定向到 http://?如果我尝试将 http://地址添加到 Okta 登录 URI,当我尝试访问页面时会发生此错误:
The information you’re about to submit is not secure
当我点击“仍然发送”按钮时,页面显示 ASP.NET CORE 错误:
System.Exception: An error was encountered while handling the remote login.
---> System.Exception: OpenIdConnectAuthenticationHandler: message.State is null or empty.
--- End of inner exception stack trace ---
at Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler`1.HandleRequestAsync()
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
如何让它在这种环境下工作?在 localhost,HTTP 和 HTTPS 一切都像魅力一样工作。之前,我不得不用 cookie(SameSiteModes 等)做一些技巧,因为页面向我显示了 Corellation 错误。
这是我在项目中使用的 Startup.cs 中的 ConfigureServices:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie(options =>
{
options.Cookie.SameSite = SameSiteMode.Lax;
})
.AddOpenIdConnect(options =>
{
options.NonceCookie.SecurePolicy = CookieSecurePolicy.Always;
options.CorrelationCookie.SecurePolicy = CookieSecurePolicy.Always;
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.Authority = oktaOrgUri;
options.RequireHttpsMetadata = true;
options.ClientId = oktaClientId;
options.ClientSecret = oktaClientSecret;
options.ResponseType = OpenIdConnectResponseType.Code;
options.GetClaimsFromUserInfoEndpoint = true;
options.Scope.Add("openid");
options.Scope.Add("profile");
options.Scope.Add("email");
options.SaveTokens = true;
options.TokenValidationParameters = new TokenValidationParameters
{
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(oktaClientSecret)),
NameClaimType = "name",
RoleClaimType = "groups",
ValidateIssuer = true
};
});
services.AddAuthorization();
}
oktaOrgUri = https://dev-1234567.okta.com/oauth2/default
oktaClientId and oktaClientSecret filled with values from Okta
然后在Startup.cs中配置
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
最佳答案
在同事的帮助下,我设法解决了这个问题。
解决方案是将这部分代码添加到 Startup.cs 的配置部分
app.Use((context, next) =>
{
context.Request.Scheme = "https";
return next();
});
有了这个,我的应用程序始终使用 https 方案,连接到 Okta 时不再出现问题。
关于c# - OpenIdConnect 重定向到 http 而不是 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72488243/
我正在 ASP.Net MVC C# 中开发一个依赖方,它应该在外部身份提供者中进行身份验证,我正在使用 Microsoft 的 owin 库。我遇到的问题是 Idp 没有公开元数据端点,即使我没有在
在过去的几天里,我一直在阅读有关 OAuth2 和 OpenIDConnect 的所有规范,并使用 Thinktecture Identity Server 实现了一个测试客户端。我还学习了几门复数类
在使用混合或授权代码流获取访问 token 以使其远离浏览器后,在(ASP.NET Core)OpenIdConnect 中间件中使用 SaveTokens = true 以便它们再次出现在浏览器中似
我已经使用 OpenIdConnect 通过 Azure AD 设置了一个 .NET Core 2.0 Web 应用(例如: https://github.com/Azure-Samples/acti
我已经使用 OpenIdConnect 通过 Azure AD 设置了一个 .NET Core 2.0 Web 应用(例如: https://github.com/Azure-Samples/acti
我在 ASP.NET Core 2.0 应用程序中使用 OpenIdConnectMiddleware,使用 Auth0 作为身份验证。 我关注了this guide通过Auth0实现认证,可以成功登
我有一个使用 Keycloak 注册的外部 openidconnect 身份提供商。当客户端应用程序尝试访问 protected 资源时,它会被重定向到 KeyCloak 登录页面。在登录页面上,我启
我正在尝试使用 couchbase DB 并使用授权代码流程为其设置身份验证。我按照此 link 中的步骤操作.我相应地准备了 ConfigJson。使用 Pods 我为 ios 安装了 Couchb
在 ASP.NET MVC 应用程序中,我正在尝试针对外部 OIDC 服务实现身份验证。对于我的测试,我使用 IdentityServer3 ( https://identityserver.gith
我在将 ASP.NET CORE 5.0 Web 应用程序与 OKTA 集成时遇到问题。我的公司需要将所有 Web 应用程序与 OKTA 集成。我写的这个应用程序作为 Linux 容器托管在 Farg
我试图实现 Multi-Tenancy 身份验证(我正在学习),到目前为止,我已经成功地在单租户中实现了我的应用程序的身份验证。 我用于单个租户的代码是 public void ConfigureA
我有一个 RP 没有明确要求您登录的情况。但是,我查看了 Open ID Connect 的 session 管理规范,更具体地说是 check_session_iframe端点规范草案here 我想
我想使用 对最终用户进行身份验证智威汤逊由 OpenId 提供连接提供程序,如 keycloak 或 auth0..etc 在 中istio 服务网格。但我可能无法成功集成它,因为我是 JWT aut
我们有多个租户,他们使用不同的权限(他们自己的,而不仅仅是标准提供商)。虽然我知道如何动态设置 clientId 和 secret,但我不知道如何设置权限。它在启动期间设置一次,之后无法更改(或者看起
目前,我在将 MVC 应用程序从 beta 3 迁移到 4 时遇到了多个问题 - 其中之一与 OpenIdConnect 到 Windows Azure 进行身份验证有关。当我转到具有授权属性的页面时
我有一个使用 ASP.NET Identity 运行的 IdentityServer4 应用程序。我想使用它,以便其他应用程序的用户可以通过我的远程身份服务器登录。 我已使用以下设置在身份服务器中配置
我正在尝试使用 OWIN Open ID Connect 中间件将我的 ASP.NET 应用程序的身份验证外包给 Azure Active Directory。应用程序在访问需要授权的页面时成功重定向
在 .Net 上,当我创建一个 Open ID 连接身份验证选项时,我有一个属性来设置 RedirectUri,这甚至按照文档中的建议定义,但 AspNetCore 上不存在这样的属性,它会自动设置为
普通 OpenIDConnect 服务器的工作方式如下: 你去 a.com/secure-resource 你从服务器得到一个302 您的浏览器处理它并将您发送到身份服务器 你在那里登录 它通过 PO
我不知道该使用哪个包: Microsoft.AspNet.Authentication.OpenIdConnect "1.0.0-beta4" Microsoft.AspNet.Security.Op
我是一名优秀的程序员,十分优秀!