question

EhsanRabiee-0938 avatar image
0 Votes"
EhsanRabiee-0938 asked DuaneArnold-0443 answered

Error on Initialize <Custom Authentication Method for AD FS in Windows Server >

I developed the c# DLL for customize AD FS MFA. So I use from this tutorial Build a Custom Authentication Method for AD FS in Windows Server



I use this Power Shell commands:

 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:\Release\MFAAdapter.dll")
 ([System.Reflection.Assembly]::LoadFile("C:\Release\MFAAdapter.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:\Release\config.json'
 net stop adfssrv
 net start adfssrv


But after start ADFS service on event viewer this error occurs:

 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.

But my DLL is load and work on Authentication. also it loads TryEndAuthentication() function

Why does this error occur?

At the end: There is another problem in calling the OnAuthenticationPipelineLoad() function. In this way, this function is not called at all and does not load the configuration file`(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);
         }
     }
dotnet-csharpadfs
5 |1600 characters needed characters left characters exceeded

Up to 10 attachments (including images) can be used with a maximum of 3.0 MiB each and 30.0 MiB total.

1 Answer

DuaneArnold-0443 avatar image
0 Votes"
DuaneArnold-0443 answered

@EhsanRabiee-0938
Maybe, the link will help you. Nine times out of ten, someone has encountered the error. So yo you can take the error message and search Bing or Google for a possible resolution.

https://social.technet.microsoft.com/Forums/en-US/2188b2a7-4ce6-4541-bce8-9bce2ca666eb/an-error-occurred-loading-an-authentication-provider?forum=ADFS

HTH

5 |1600 characters needed characters left characters exceeded

Up to 10 attachments (including images) can be used with a maximum of 3.0 MiB each and 30.0 MiB total.