我不是.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");
}
请建议我如何通过启动类重定向Controller调用。
谢谢
答案 0 :(得分:0)
简短的回答是,大多数代码将不会直接执行。这些是在身份验证过程中执行的事件。
更长的答案是,您需要为这些事件中的每一个实际填写哪些空白。有关OWIN的一些信息可能会有所帮助。
我认为OWIN是通向您应用程序的管道。该请求在到达您的应用程序之前先经过管道。当您的应用程序发送响应时,将再次使用此管道。在此过程中,存在称为“中间件”的组件,它们可以对请求和响应起作用。使用管道模型,将中间件视为管道中的阀门。中间件在导入时按顺序执行,在导出时按相反顺序执行。
回到您的代码。这行:
app.UseOpenIdConnectAuthentication(
告诉OWIN使用OpenIdConnect进行身份验证。您需要为OpenIdConnect流程中每个事件编写代码。第一个RedirectToIdentityProvider
需要重定向(可能使用http 302)到您的身份提供者,该身份提供者可以是ForgeRock或PingIdentity或IdentityServer。每个事件都需要为其编写代码。
OpenIdConnect的整个主题相当广泛,而且有点复杂,可能比我在答案中可以实际完成的更多。但是有关该主题的资源很多。
我希望对您有帮助