【问题标题】:.NetCore code with sustainsys-saml2 does nothing带有sustainsys-saml2 的.NetCore 代码什么都不做
【发布时间】:2018-11-09 16:59:31
【问题描述】:

我有一个 SSO 工作的 .Net MVC 项目。 SSO 配置如下所示:

    <system.identityModel>
    <identityConfiguration saveBootstrapContext="true">
      <caches>
        <sessionSecurityTokenCache type="Vixion.IdentityModel.Cache.SharedSessionSecurityTokenCache, Vixion.IdentityModel.Cache">
          <cacheServiceAddress url="http://tvwapps35434d.kpnis.nl:1008/SessionSecurityTokenCacheService.svc" />
        </sessionSecurityTokenCache>
      </caches>
      <audienceUris>
        <add value="http://localhost:24442/" />
      </audienceUris>
      <securityTokenHandlers>
        <remove type="System.IdentityModel.Services.Tokens.MachineKeySessionSecurityTokenHandler, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <add type="System.IdentityModel.Tokens.SessionSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <add type="System.IdentityModel.Tokens.Saml2SecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </securityTokenHandlers>
      <certificateValidation certificateValidationMode="None" />
      <issuerNameRegistry type="System.IdentityModel.Tokens.ValidatingIssuerNameRegistry, System.IdentityModel.Tokens.ValidatingIssuerNameRegistry">
        <authority name="http://vix-make-o:8080">
          <keys>
            <add thumbprint="5137c779a1e77a0f4a78abd356b0238912637469" />
          </keys>
          <validIssuers>
            <add name="http://vix-make-o:8080" />
          </validIssuers>
        </authority>
      </issuerNameRegistry>
    </identityConfiguration>
  </system.identityModel>
  <system.identityModel.services>
    <federationConfiguration>
      <cookieHandler requireSsl="false" path="/" />
      <wsFederation passiveRedirectEnabled="true" issuer="http://vix-make-o:8080" realm="http://localhost:24442/" requireHttps="false" reply="http://localhost:24442/" />
    </federationConfiguration>
  </system.identityModel.services>

根据此处的示例: https://github.com/Sustainsys/Saml2/tree/master/Sustainsys.Saml2.AspNetCore2

我在一个新的 .NetCore 应用中编写了这段代码:

services.AddIdentity<IdentityUser, IdentityRole>()                
                .AddDefaultTokenProviders();

services.AddDistributedMemoryCache();

services.AddSession(options =>
{
    options.Cookie.HttpOnly = true;
});

services.AddMvc()
    .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());

services.AddAuthentication()
    .AddSaml2(options =>
    {
        options.SPOptions.EntityId = new EntityId("http://vix-make-o:8080");
        options.IdentityProviders.Add(
            new IdentityProvider(
                new EntityId("http://vix-make-o:8080/ws_saml_metadata"), options.SPOptions)
            {
                //LoadMetadata = true
            });                    
    });

app.UseAuthentication();
app.UseSession();
app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");
});

当我启动应用程序时,浏览器会直接进入索引页面。没有错误,什么都没有。当我检查 SAML Chrome 面板时,它根本没有显示任何流量。

我不希望我的代码能正常工作,但它至少应该做一些事情来提示我如何走得更远。

欢迎提出任何建议。

谢谢。

S.

【问题讨论】:

    标签: sustainsys-saml2


    【解决方案1】:

    删除 web.config 内容。它不与 ASP.NET Core 模块一起使用。

    设置 LoadMetadata 标志,或手动添加必要的配置。

    将 Saml2 设置为身份验证的默认质询协议。

    最后,向控制器添加[Authorize] 属性,该属性需要身份验证才能启动身份验证过程。

    【讨论】:

    • 很抱歉造成误解,但我知道我不使用.NetCore中的web.config。我只是将它作为工作示例。
    • 当我设置 LoadMetadata 标志时,应用程序崩溃。我没有从该服务器取回任何元数据。
    • 如果服务器不提供任何元数据,则需要在IdentityProvider对象上手动配置所需参数:SsoServiceUrl、Binding和SigningCertificate。
    猜你喜欢
    • 1970-01-01
    • 2016-09-22
    • 2022-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    相关资源
    最近更新 更多