Ejemplo n.º 1
0
 public override void ApplyToOAuthComponent(OAuthComponent oauthComponent)
 {
     if (HasSomethingToDeploy(oauthComponent))
     {
         RunArasUpdateCmdForComponent(oauthComponent);
     }
 }
        public override void Connect(IReadOnlyCollection <Component> instanceComponents)
        {
            Logger.Instance.Log(LogLevel.Info, "\nConfiguring component ({0}) to work with component({1}):\n", OAuthComponentId, InnovatorComponentId);

            OAuthComponent     oauthComponent     = instanceComponents.Single(c => c.Id == OAuthComponentId) as OAuthComponent;
            InnovatorComponent innovatorComponent = instanceComponents.Single(c => c.Id == InnovatorComponentId) as InnovatorComponent;

            SetupRedirectUris(oauthComponent, innovatorComponent);
        }
        private void SetupRedirectUris(OAuthComponent oauthComponent, InnovatorComponent innovatorComponent)
        {
            ICollection <string> innovatorClientUrls = new List <string>();

            Uri innovatorServerUri = new Uri(innovatorComponent.Url);
            // innovatorServerUri.Host may contain localhost, IP, Computername or FQDN
            // GetHostEntry allow to get FQDN by any of this values
            string dnsHostName = Dns.GetHostEntry(innovatorServerUri.Host).HostName;
            ICollection <string> innovatorServerHosts = new HashSet <string>();

            // Add always "localhost"
            innovatorServerHosts.Add("localhost");
            // Add host name (computer name)
            innovatorServerHosts.Add(dnsHostName.Split('.')[0]);
            // Add FQDN
            innovatorServerHosts.Add(dnsHostName);
            // Get IP addresses for FQDN (IPv4 only)
            foreach (IPAddress ipAddress in Dns.GetHostAddresses(dnsHostName).Where(hostName => IsInterNetwork(hostName)))
            {
                innovatorServerHosts.Add(ipAddress.ToString());
            }

            string webAlias = ParseInnovatorServerWebAlias(innovatorServerUri);

            foreach (string innovatorServerHost in innovatorServerHosts)
            {
                innovatorClientUrls.Add(string.Format(CultureInfo.InvariantCulture, "{0}://{1}{2}Client", innovatorServerUri.Scheme, innovatorServerHost, webAlias));
            }

            // Create redirectUris content based on redirectUris values
            StringBuilder redirectUrisContent           = new StringBuilder();
            StringBuilder postLogoutRedirectUrisContent = new StringBuilder();

            foreach (string innovatorClientUrl in innovatorClientUrls)
            {
                redirectUrisContent.AppendLine(string.Format(CultureInfo.InvariantCulture, "\t\t\t\t\t<redirectUri value='{0}/OAuth/RedirectCallback' />", innovatorClientUrl));
                redirectUrisContent.AppendLine(string.Format(CultureInfo.InvariantCulture, "\t\t\t\t\t<redirectUri value='{0}/OAuth/SilentCallback' />", innovatorClientUrl));
                redirectUrisContent.AppendLine(string.Format(CultureInfo.InvariantCulture, "\t\t\t\t\t<redirectUri value='{0}/OAuth/PopupCallback' />", innovatorClientUrl));
                postLogoutRedirectUrisContent.AppendLine(string.Format(CultureInfo.InvariantCulture, "\t\t\t\t\t<redirectUri value='{0}/OAuth/PostLogoutCallback' />", innovatorClientUrl));
            }

            string pathToOAuthConfig = BaseFileSystem.CombinePaths(oauthComponent.InstallationPath, "OAuth.config");

            oauthComponent.TargetFileSystem.XmlHelper.AppendFragment(
                redirectUrisContent.ToString(),
                oauthComponent.TargetFileSystem.XmlHelper.GetNode(pathToOAuthConfig, "/oauth/server/clientRegistries/clientRegistry[@id='InnovatorClient']/redirectUris"));
            oauthComponent.TargetFileSystem.XmlHelper.AppendFragment(
                postLogoutRedirectUrisContent.ToString(),
                oauthComponent.TargetFileSystem.XmlHelper.GetNode(pathToOAuthConfig, "/oauth/server/clientRegistries/clientRegistry[@id='InnovatorClient']/postLogoutRedirectUris"));
        }
Ejemplo n.º 4
0
        public override void Connect(IReadOnlyCollection <Component> instanceComponents)
        {
            Logger.Instance.Log(LogLevel.Info, "\nConfiguring WinAuth for component ({0}):\n", InnovatorComponentId);

            InnovatorComponent innovatorComponent = instanceComponents.Single(c => c.Id == InnovatorComponentId) as InnovatorComponent;
            OAuthComponent     oauthComponent     = instanceComponents.Single(c => c.Id == OAuthComponentId) as OAuthComponent;

            Logger.Instance.Log(LogLevel.Info, "Enabling Windows authentication for login.aspx and IOMlogin.aspx");

            innovatorComponent.SetupWinAuth();

            if (!innovatorComponent.TargetFileSystem.XmlHelper.CheckIfExists(innovatorComponent.PathToConfig, "/Innovator/ClientConfig"))
            {
                Logger.Instance.Log(LogLevel.Info, "Appending 'ClientConfig' node to InnovatorServerConfig.xml");

                innovatorComponent.TargetFileSystem.XmlHelper.AppendFragment(ClientConfigNodeContent,
                                                                             innovatorComponent.TargetFileSystem.XmlHelper.GetNode(innovatorComponent.PathToConfig, "/Innovator"));
            }

            if (!innovatorComponent.TargetFileSystem.XmlHelper.CheckIfExists(innovatorComponent.PathToConfig, "/Innovator/ClientLogon"))
            {
                Logger.Instance.Log(LogLevel.Info, "Appending 'ClientLogon' node to InnovatorServerConfig.xml");

                innovatorComponent.TargetFileSystem.XmlHelper.AppendFragment(ClientLogonNodeContent,
                                                                             innovatorComponent.TargetFileSystem.XmlHelper.GetNode(innovatorComponent.PathToConfig, "/Innovator"));
            }

            string pathToClientOAuthConfig = Path.Combine(innovatorComponent.InstallationPath, "Client\\OAuth.config");

            if (!innovatorComponent.TargetFileSystem.XmlHelper.CheckIfExists(pathToClientOAuthConfig, "/oauth/client/serverLocation"))
            {
                Logger.Instance.Log(LogLevel.Info, "Specifying correct OAuth Url ({0}) in the Innovator\\Client\\OAuth.config", oauthComponent.Url);

                innovatorComponent.TargetFileSystem.XmlHelper.AppendFragment(string.Format("<serverLocation url=\"{0}\" />", oauthComponent.Url),
                                                                             innovatorComponent.TargetFileSystem.XmlHelper.GetNode(pathToClientOAuthConfig, "/oauth/client"));
            }
        }
 public override void ApplyToOAuthComponent(OAuthComponent oauthComponent)
 {
     ApplyToWebComponent(oauthComponent);
 }
Ejemplo n.º 6
0
 public abstract void ApplyToOAuthComponent(OAuthComponent oauthComponent);