преобразование mvc 5 adfs в .net core adfs - PullRequest
3 голосов
/ 02 мая 2019

У меня есть приложение mvc 5, которое успешно использует локальные службы федерации активных каталогов

соответствующие настройки веб-конфигурации

 <appSettings>
    <add key="ida:Issuer" value="https://www.fedsvc3copa.beta.pa.gov/adfs/ls/"/>
  </appSettings>

 <authority name="http://www.fedsvc3copa.beta.pa.gov/adfs/services/trust">
          <keys>
            <add thumbprint="xxxxxxxxxxxxxxx"/>
          </keys>
          <validIssuers>
            <add name="http://www.fedsvc3copa.beta.pa.gov/adfs/services/trust"/>
          </validIssuers>
        </authority>

           <federationConfiguration>
      <cookieHandler requireSsl="true"/>

      <wsFederation passiveRedirectEnabled="true" issuer="https://www.fedsvc3copa.beta.pa.gov/adfs/ls/" realm="https://localhost:44363/" requireHttps="true"/>
    </federationConfiguration>

, пытающиеся сделать то же самое для .net core mvcприложение.но я немного запутался, что положить в startup.cs

Я следую вместе с https://docs.microsoft.com/en-us/aspnet/core/security/authentication/ws-federation?view=aspnetcore-2.1

, поэтому у меня есть

 .AddWsFederation(options =>
      {
        // MetadataAddress represents the Active Directory instance used to authenticate users.
        options.MetadataAddress = "https://www.fedsvc3copa.beta.pa.gov/federationmetadata/2007-06/FederationMetadata.xml";

        // Wtrealm is the app's identifier in the Active Directory instance.
        // For ADFS, use the relying party's identifier, its WS-Federation Passive protocol URL:
        options.Wtrealm = "https://localhost:44363/";

        // For AAD, use the App ID URI from the app registration's Properties blade:
        options.Wtrealm = "???????";
      });

Я неуверен, что положить в царство AAD, поскольку я не использую лазурь.также мне не нужен отпечаток и эмитент?http://www.fedsvc3copa.beta.pa.gov/adfs/services/trust

1 Ответ

3 голосов
/ 11 мая 2019

Чтобы ответить на ваш первый вопрос:

Если вы не используете Azure, вам не нужно беспокоиться об AAD.На самом деле вы хотите убедиться, что .Wtrealm не настроен дважды.Так что просто удалите этот второй.

Чтобы ответить на второй вопрос о Отпечатке пальца и Эмитенте:

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

Я попытался воспроизвести все ваши исходные параметры конфигурации в приведенном ниже коде, который принадлежит файлу startup.cs.Значение your x.509 cert string можно получить из файла xml по URL-адресу MetadataAddress.Он будет находиться между тегами <X509Certificate>.

var rawCertData = Convert.FromBase64String("your x.509 cert string");
X509Certificate2 cert = new X509Certificate2(rawCertData);
SecurityKey signingKey = new X509SecurityKey(cert);
    services.AddAuthentication()
        .AddWsFederation(options => {
            options.MetadataAddress = "https://www.fedsvc3copa.beta.pa.gov/federationmetadata/2007-06/FederationMetadata.xml";
            options.Wtrealm = "https://localhost:44363/";
            options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters {
                ValidateIssuer = true,
                ValidIssuer = "http://www.fedsvc3copa.beta.pa.gov/adfs/services/trust",
                ValidateIssuerSigningKey = true,
                IssuerSigningKey = signingKey
            };
            options.RequireHttpsMetadata = true;
        }).AddCookie(cookieoption => {
            cookieoption.Cookie.SecurePolicy = CookieSecurePolicy.Always;
        });

Примечание. С помощью этой конфигурации я могу попасть на вашу страницу входа в систему adfs.Однако я не могу войти, потому что у меня нет прав;поэтому я не знаю, что произойдет на POST после того, как вы войдете в систему. Если у вас возникли проблемы, дайте мне знать.

...