通过 OWIN 启动重定向控制器
Posted
技术标签:
【中文标题】通过 OWIN 启动重定向控制器【英文标题】:Redirecting Controller through OWIN startup 【发布时间】:2018-10-19 08:34:22 【问题描述】:我不是 .net 开发人员,我的任务是在现有 .net 应用程序中应用 SSO。 我为 SSO 添加了 OWIN OpenIDConnect。我的项目不是 MVC 项目。现在我的电话在 iisexpress 服务器启动时通过 Startup.cs。但是我的登录页面 (login.aspx) 是用 /login.aspx 调用的。 当我在登录页面上调用提交按钮时,我想调用启动。呼叫没有通过启动。 我的 ConfigureAuth 方法是
public void ConfigureAuth(IAppBuilder app)
app.SetDefaultSignInAsAuthenticationType(Microsoft.Owin.Security.Cookies.CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new Microsoft.Owin.Security.Cookies.CookieAuthenticationOptions
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/login.ashx")
);
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
Authority = "Authority",
ClientId = "ClientId",
RequireHttpsMetadata = false,
ClientSecret = "ClientSecret",
Scope = OpenIdConnectScope.OpenIdProfile,
ResponseType = OpenIdConnectResponseType.CodeIdToken,
AuthenticationMode = AuthenticationMode.Active,
Notifications = new OpenIdConnectAuthenticationNotifications()
RedirectToIdentityProvider = (context) =>
//I'm able to break into this method
return Task.FromResult(0);
,
MessageReceived = (context) =>
//doesn't seem to run this line
return Task.FromResult(0);
,
SecurityTokenReceived = (context) =>
//doesn't seem to run this line
return Task.FromResult(0);
,
SecurityTokenValidated = (context) =>
//doesn't seem to run this line
return Task.FromResult(0);
,
AuthorizationCodeReceived = (context) =>
//doesn't seem to run this line
return Task.FromResult(0);
,
AuthenticationFailed = (context) =>
//doesn't seem to run this line
return Task.FromResult(0);
,
);
System.Console.WriteLine("After OpenIdconfiguration");
请建议我如何通过启动类重定向控制器调用。
谢谢
【问题讨论】:
【参考方案1】:简短的回答是大部分代码不会直接执行。这些是作为身份验证过程的一部分执行的事件。
更长的答案是,您需要填写每个事件实际需要发生的情况。一些关于 OWIN 的信息可能会有所帮助。
我认为 OWIN 是通向您的应用程序的管道。请求在到达您的应用程序之前通过管道。当您的应用程序发送响应时,将再次使用此管道。在此过程中,有一些称为“中间件”的组件可以作用于请求和响应。使用管道模型,将中间件视为管道中的阀门。中间件在输入时按顺序执行,在输出时按相反顺序执行。
回到你的代码。这一行:
app.UseOpenIdConnectAuthentication(
告诉 OWIN 使用 OpenIdConnect 进行身份验证。您需要为属于 OpenIdConnect 流程的每个事件编写代码。第一个RedirectToIdentityProvider
需要重定向(可能使用 http 302)到您的身份提供者,这可能是 ForgeRock 或 PingIdentity 或 IdentityServer 之类的东西。这些事件中的每一个都需要为它们编写的代码。
OpenIdConnect 的整个主题相当广泛,而且有点复杂,可能比我在答案中实际能做的要多。但是有很多关于这个主题的资源。
希望对你有帮助
【讨论】:
以上是关于通过 OWIN 启动重定向控制器的主要内容,如果未能解决你的问题,请参考以下文章
检测应用程序是不是从推送通知启动/打开,然后将其重定向到特定视图控制器
带有 OWIN 的 WebApi 2 - 授权挑战不会重定向到登录