Exemple #1
0
        /// <summary>
        /// Called when the provider is loaded by the AD FS service. The config will be loaded in this function.
        /// </summary>
        /// <param name="configData"></param>
        public void OnAuthenticationPipelineLoad(IAuthenticationMethodConfigData configData)
        {
            Log("OnAuthenticationPipelineLoad: Provider Version " + version);

            var registryReader = new RegistryReader(Log);

            // Read logging entry first to be able to log the reading of the rest if needed
            this.debuglog = registryReader.Read("debug_log") == "1";

            // Read the other defined keys into a dict
            List <string> configKeys = new List <string>(new string[]
                                                         { "use_upn", "url", "disable_ssl", "enable_enrollment", "service_user", "service_pass", "service_realm",
                                                           "realm", "trigger_challenges", "send_empty_pass" });

            var configDict = new Dictionary <string, string>();

            configKeys.ForEach(key =>
            {
                string value = registryReader.Read(key);
                Log("Read value '" + value + "' for key '" + key + "'");
                configDict[key] = value;
            });

            string url = GetFromDict(configDict, "url");

            if (string.IsNullOrEmpty(url))
            {
                Error("No server URL configured. Can not initialize privacyIDEA without a server URL.");
                throw new Exception("No server URL configured. Can not initialize privacyIDEA without a server URL.");
            }

            // Note: the config asks if ssl verify should be disabled, while the constructor parameter indicates if ssl verify should be enabled!
            bool shouldUseSSL = GetFromDict(configDict, "disable_ssl", "0") != "1";

            this.privacyIDEA        = new PrivacyIDEA(url, "PrivacyIDEA-ADFS", shouldUseSSL);
            this.privacyIDEA.Logger = this;

            string serviceUser = GetFromDict(configDict, "service_user", "");
            string servicePass = GetFromDict(configDict, "service_pass", "");

            if (!string.IsNullOrEmpty(serviceUser) && !string.IsNullOrEmpty(servicePass))
            {
                this.privacyIDEA.SetServiceAccount(serviceUser, servicePass, GetFromDict(configDict, "service_realm"));
            }

            this.use_upn = GetFromDict(configDict, "use_upn", "0") == "1";

            this.enrollmentEnabled = GetFromDict(configDict, "enable_enrollment", "0") == "1";
            this.enrollmentApps    = registryReader.ReadMultiValue("enrollment_apps");

            this.triggerChallenge = GetFromDict(configDict, "trigger_challenges", "0") == "1";
            if (!this.triggerChallenge)
            {
                // Only if triggerChallenge is disabled, sendEmptyPassword COULD be set
                this.sendEmptyPassword = GetFromDict(configDict, "send_empty_pass", "0") == "1";
            }
            this.privacyIDEA.Realm = GetFromDict(configDict, "realm", "");
            var realmmap = registryReader.GetRealmMapping();

            Log("realmmapping: " + string.Join(" , ", realmmap));
            this.privacyIDEA.RealmMap = realmmap;
        }
 public void Setup()
 {
     server      = WireMockServer.Start();
     privacyIDEA = new PrivacyIDEA(server.Urls[0], "test", false);
 }