Sustainsys/Saml2 -与Saml2一起的其他认证(混合认证)



以前我们的web应用程序(。NET Framework 4.8)使用Windows身份验证,然后我们切换到Sustainsys/Saml2与Startup.cs和OWIN登录。

事实证明,SAML登录不能被Task Scheduler/CRON和外部API消费者使用,因为SAML需要人工交互。因此,SAML必须禁用,其他身份验证必须用于以下页面:

  • 由Task Scheduler运行的后台脚本(aspx页面);
  • 第三方应用程序使用我们的一些api GET/POST;

Task Scheduler不支持saml2等外部第三方应用程序,它们通过存储在配置中的登录名/密码连接。

据我所知,SAML2需要通过web弹出窗口(在我们的情况下是azure)进行人工交互,不能自动化。

使用OAuth(令牌)和SAML解决了这个问题。如果OAuth在OWIN Startup.cs中放在SAML之前,即使SAML被激活(我认为SAML代码看到该线程),令牌API也会工作。CurrentPrincipal已设置,因此跳过SAML步骤)

using System;
using System.Web.Http;

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Owin;
using Owin;

using BundleTable = System.Web.Optimization.BundleTable;
////

[assembly: OwinStartup(typeof(MyApplication.App_Start.Startup))]

namespace MyApplication.App_Start
{
public class Startup
{
// Configure the HTTP request pipeline.
public void Configuration(IAppBuilder app)
{
ServiceCollection services = new ServiceCollection();
ConfigureServices(services);

OAuthConfiguration oauthConfig =
MyConfigurationManager.ReadOAuth();
OAuthSetup oauth = new OAuthSetup(app, oauthConfig); 
/* server + consumer
IdentityServer 3
// server. Probably this step can be skipped if use Azure as server
app.Map(configuration.AuthServerUrl, idsrvApp =>
{
idsrvApp.UseIdentityServer(options);
});
//consumer
app.UseJwtBearerAuthentication,  
app.UseClaimsTransformation */       
oauth.Use(); 


SamlConfiguration samlConfig =
MyConfigurationManager.ReadSaml();
SamlSetupSustainsys saml = new SamlSetupSustainsys(app, samlConfig);
/*
Sustainsys
app.UseSaml2Authentication(options);*/
saml.Use(); 

WebApiConfig.Register(config);
app.RequireAspNetSession();
app.UseWebApi(config);

BundleTable.EnableOptimizations = false;

BundlingConfig.Register(BundleTable.Bundles);
}

// Add services to the container.
public void ConfigureServices(IServiceCollection services)
{
//services.AddMvcCore();
}
}
}

相关内容

  • 没有找到相关文章

最新更新