Добавить AD FS логин на существующий сайт ASP.NET - PullRequest
0 голосов
/ 11 января 2019

Я работаю над веб-сайтом ASP.NET, и мне было поручено добавить AD FS вход в подпапку сайта (например, https://website.com/secret/test.aspx). Основной сайт (https://website.com) не должен требовать входа в систему.

Мы хотим использовать пассивный WIF для нашей конечной точки AD FS SAML 2.0 / WS-Federation (я правильно говорю), которая затем перенаправляет обратно на https://website.com/secret/test.aspx.

Я могу перенаправить через STS с некоторыми добавлениями в корневой Web.conf:

<!-- Start WIF authentication additions in <configuration> -->
<configSections>
  <section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=XXX" />
  <section name="system.identityModel.services" type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=XXX" />
</configSections>
<location path="FederationMetadata">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>
<!-- End WIF authentication additions -->

...

<!-- Start WIF authentication additions in <system.web> -->
<authorization>
  <deny users="?" />
</authorization>
<authentication mode="None" />
<!-- End WIF authentication additions -->

...

<!-- Start WIF authentication additions in <system.webServer> -->
<modules>
  <add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=XXX" preCondition="managedHandler" />
  <add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=XXX" preCondition="managedHandler" />
</modules>
<!-- End WIF authentication additions -->

...

<!-- Start WIF authentication additions after <system.identityModel> -->
<system.identityModel>
  <identityConfiguration>
    <audienceUris>
      <add value="https://website.com/secret/test.aspx" />
    </audienceUris>
    <issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=XXX">
      <trustedIssuers>
        <add thumbprint="XXX" name="XXX Relying Party Trust" />
      </trustedIssuers>
    </issuerNameRegistry>
    <certificateValidation certificateValidationMode="None" />
  </identityConfiguration>
</system.identityModel>
<system.identityModel.services>
  <federationConfiguration>
    <cookieHandler requireSsl="true" />
    <wsFederation passiveRedirectEnabled="true" issuer="https://fs.website.com/adfs/ls" realm="https://website.com/secret/test.aspx" reply="https://website.com/secret/test.aspx" requireHttps="true" />
  </federationConfiguration>
</system.identityModel.services>
<!-- End WIF authentication additions -->

Но это требует авторизации для всего сайта, а не только для / secret / подпапки, и у меня гораздо больше проблем с попыткой выяснить это, чем я думаю. Это правильный подход? Стоит ли искать решение, полностью основанное на коде?

Сайт не является MVC.

Спасибо за любое направление, которое вы можете указать, даже если мне нужна более точная терминология.

Версии программного обеспечения:

Веб-сервер - Windows Server 2016 v1607 b14393.2665 (IIS v10.0.14393.0)

AD FS Host - Windows Server 2012 R2 Standard

1 Ответ

0 голосов
/ 13 января 2019

Вы можете использовать «разрешить / запретить» для папок через web.config, либо на корневом уровне, либо на уровне папок.

, например

<location path="Folder">
   <system.web>
      <authorization>
         <deny users="*"/> 
      </authorization>
   </system.web>
</location>

Таким образом, в целом разрешите пользователям (согласно метаданным выше) и запретите доступ на уровне папок.

...