Почему WS-Federation требуется пакет Microsoft.AspNetCore.DataProtection.Abstractions NuGet? - PullRequest
2 голосов
/ 03 февраля 2020

Я учился тому, как заставить WS-Federation работать без идентификатора, и для первоначальной настройки я использовал это руководство: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/ws-federation?view=aspnetcore-3.0

Долгое время я держал Я столкнулся с ошибкой, но случайно нашел решение, которое включало бы пакет Microsoft.AspNetCore.DataProtection.Abstractions NuGet.

Это нигде не упоминалось в руководстве, и я нашел только один пост, который когда-либо был упоминает это в отношении WS-Federation: https://github.com/dotnet/aspnetcore/issues/18639

Что делает этот пакет NuGet и почему он необходим для работы WS-Federation? Это даже правильный способ настройки?

1 Ответ

0 голосов
/ 03 февраля 2020

Вы можете найти исходный код на github здесь

По сути, он обеспечивает интерфейс IDataProtector и IDataProtectionProvider .

namespace Microsoft.AspNetCore.DataProtection
{
    /// <summary>
    /// An interface that can provide data protection services.
    /// </summary>
    public interface IDataProtector : IDataProtectionProvider
    {
        /// <summary>
        /// Cryptographically protects a piece of plaintext data.
        /// </summary>
        /// <param name="plaintext">The plaintext data to protect.</param>
        /// <returns>The protected form of the plaintext data.</returns>
        byte[] Protect(byte[] plaintext);

        /// <summary>
        /// Cryptographically unprotects a piece of protected data.
        /// </summary>
        /// <param name="protectedData">The protected data to unprotect.</param>
        /// <returns>The plaintext form of the protected data.</returns>
        /// <exception cref="System.Security.Cryptography.CryptographicException">
        /// Thrown if the protected data is invalid or malformed.
        /// </exception>
        byte[] Unprotect(byte[] protectedData);
    }
}
namespace Microsoft.AspNetCore.DataProtection
{
    /// <summary>
    /// An interface that can be used to create <see cref="IDataProtector"/> instances.
    /// </summary>
    public interface IDataProtectionProvider
    {
        /// <summary>
        /// Creates an <see cref="IDataProtector"/> given a purpose.
        /// </summary>
        /// <param name="purpose">
        /// The purpose to be assigned to the newly-created <see cref="IDataProtector"/>.
        /// </param>
        /// <returns>An IDataProtector tied to the provided purpose.</returns>
        /// <remarks>
        /// The <paramref name="purpose"/> parameter must be unique for the intended use case; two
        /// different <see cref="IDataProtector"/> instances created with two different <paramref name="purpose"/>
        /// values will not be able to decipher each other's payloads. The <paramref name="purpose"/> parameter
        /// value is not intended to be kept secret.
        /// </remarks>
        IDataProtector CreateProtector(string purpose);
    }
}

Они оба являются абстракциями некоторой реализации, которую реализует WS-Federation (одна или другая или обе) или которую использует (ожидая ее от какого-либо контейнера или конструктора DI). ). В любом случае, вы не сможете заставить его работать без него.

Способ установить это также установить пакет nuget отсюда

...