Ошибка при инициализации

#c# #adfs #multi-factor-authentication #yubikey

Вопрос:

Я разработал библиотеку DLL c# для настройки AD FS MFA. Поэтому я использую из этого руководства Создание пользовательского метода проверки подлинности для AD FS в Windows Server

Я использую эти команды оболочки питания:

 Set-Location "C:Release"
[System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
$publish = New-Object System.EnterpriseServices.Internal.Publish
$publish.GacInstall("C:ReleaseMFAAdapter.dll")
([System.Reflection.Assembly]::LoadFile("C:ReleaseMFAAdapter.dll")).FullName
$typeName = "MFAAdapter.Adapter, MFAAdapter, Version=1.0.0.7, Culture=neutral, PublicKeyToken=23251ce4dd11647e, processorArchitecture=MSIL”
Register-AdfsAuthenticationProvider -TypeName $typeName -Name “MFA Adapter” -ConfigurationFilePath 'C:Releaseconfig.json'
net stop adfssrv
net start adfssrv
 

Но после запуска службы ADFS в средстве просмотра событий возникает эта ошибка:

 An error occurred loading an authentication provider. Fix configuration errors using PowerShell 

cmdlets and restart the Federation Service. 
Identifier: MFA Adapter 
Context: Proxy device TLS pipeline 

Additional Data 
Exception details: 
An error occurred initializing the 'MFA Adapter' authentication provider.
 

Но моя библиотека DLL загружается и работает над аутентификацией. также он загружает TryEndAuthentication() функцию

Почему возникает эта ошибка?

В конце: Есть еще одна проблема при вызове OnAuthenticationPipelineLoad() функции. Таким образом, эта функция вообще не вызывается и не загружает файл конфигурации (config.json) .

 public void OnAuthenticationPipelineLoad(IAuthenticationMethodConfigData configData)
    {
        try
        {
            if (configData != null || configData.Data != null)
            {
                using (StreamReader reader = new StreamReader(configData.Data, Encoding.UTF8))
                {
                    var config = reader.ReadToEnd();
                    var obj = JObject.Parse(config);
                    EventLog.WriteEntry(
                        "Application",
                        String.Format("Config loaded for user:{0}. iKey:{1}, user_name, bj["ikey"]]),
                        EventLogEntryType.Information);

                    var ikey = obj["ikey"].ToString();
                }
            }
            else
            {
                EventLog.WriteEntry(
                            "Application",
                            String.Format("Error: configData is null for user:{0}", user_name),
                            EventLogEntryType.Error);
                throw new ArgumentNullException();
            }
        }
        catch (Exception ex)
        {
            EventLog.WriteEntry(
                "Application",
                String.Format("Exception on OnAuthenticationPipelineLoad for user:{0}: {1}", user_name, ex.Message),
                EventLogEntryType.Error);
            throw new ArgumentException(ex.Message);
        }
    }