Browse Guides

Using HaloDBLookupService to run custom integration methods on internally facing APIs
Reading mode
Copy Link
Link Copied!
Print
Feedback
This guide has multiple versions available:
<style>p { margin: 0; }span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left:0; padding-left:5px;}blockquote blockquote{ border-color: #00bcd4; color: #00bcd4;}blockquote blockquote blockquote{ border-color: #43a047; color: #43a047;} table.grid{ border-collapse: collapse;} table.grid td, table.grid th { border: 1px solid #ddd;} .fr-fic.fr-dib{ display: block; margin: 5px auto;}.fr-fic.fr-dib.fr-fir{ text-align: right; margin: 5px 0 5px auto;}.fr-fic.fr-dib.fr-fil{ text-align: left; margin: 5px auto 5px 0;}.fr-fic.fr-dii{ float: none; margin: 5px auto;}.fr-fic.fr-dii.fr-fil{ float: left; margin: 5px auto;}.fr-fic.fr-dii.fr-fir{ float: right; margin: 5px auto;}img.fr-dib.fr-fir { margin-right: 0; text-align: right;}img.fr-dib.fr-fil { margin-left: 0; text-align: left;}img.fr-dib { margin: 5px auto; display: block; float: none;}img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC;}img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc;}img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;}</style><style> p { margin: 0; } span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px; } blockquote blockquote { border-color: #00bcd4; color: #00bcd4; } blockquote blockquote blockquote { border-color: #43a047; color: #43a047; } table.grid { border-collapse: collapse; } table.grid td, table.grid th { border: 1px solid #ddd; } .fr-fic.fr-dib { display: block; margin: 5px auto; } .fr-fic.fr-dib.fr-fir { text-align: right; margin: 5px 0 5px auto; } .fr-fic.fr-dib.fr-fil { text-align: left; margin: 5px auto 5px 0; } .fr-fic.fr-dii { float: none; margin: 5px auto; } .fr-fic.fr-dii.fr-fil { float: left; margin: 5px auto; } .fr-fic.fr-dii.fr-fir { float: right; margin: 5px auto; } img.fr-dib.fr-fir { margin-right: 0; text-align: right; } img.fr-dib.fr-fil { margin-left: 0; text-align: left; } img.fr-dib { margin: 5px auto; display: block; float: none; } img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC; } img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc; } img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box; } </style><p>In version 2.184+ there is a new connection option for Custom Integrations to connect to internally facing APIs:</p><p><br></p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImNiNGJiOWIzLWE0Y2MtNGQ0NS04MDc3LTEzY2ExY2EyMmE0ZiJ9.HGWdzMQaxBhmekcxjSqtgNa6zHO8Isk977rHsVGKDos" class="fr-fic fr-fil fr-dib" width="1078" style="width: 1080px; height: 758.849px;" height="759"></p><p><br></p><p>This connection method allows you to host a proxy application called &quot;HaloDBLookupService&quot; on your own network which can access your internally facing APIs. The Halo API then connects to this Service using requests signed by a common certificate to retrieve Database lookup results.</p><p><br></p><p>This provides an alternative option for hosted customers to connect to their on-prem applications rather than opening traffic to the internet.&nbsp;</p><p><br></p><p>The outcome can be described by the below image, where the HaloDBLookupService is the &quot;Halo Proxy Service&quot; in the image below:</p><p><br></p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjcyODYwZmY2LWZiYmQtNDlhYy04ODlmLTQ1YWMxNGI0NjNjNSJ9.DCWPM0IZXbq7nxDn9s7UJZpaeICai7nxxKoI-U3CD2c" class="fr-fic fr-fil fr-dib" width="1469" style="width: 1471px; height: 706.183px;" height="706"></p>
<style>p { margin: 0; }span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left:0; padding-left:5px;}blockquote blockquote{ border-color: #00bcd4; color: #00bcd4;}blockquote blockquote blockquote{ border-color: #43a047; color: #43a047;} table.grid{ border-collapse: collapse;} table.grid td, table.grid th { border: 1px solid #ddd;} .fr-fic.fr-dib{ display: block; margin: 5px auto;}.fr-fic.fr-dib.fr-fir{ text-align: right; margin: 5px 0 5px auto;}.fr-fic.fr-dib.fr-fil{ text-align: left; margin: 5px auto 5px 0;}.fr-fic.fr-dii{ float: none; margin: 5px auto;}.fr-fic.fr-dii.fr-fil{ float: left; margin: 5px auto;}.fr-fic.fr-dii.fr-fir{ float: right; margin: 5px auto;}img.fr-dib.fr-fir { margin-right: 0; text-align: right;}img.fr-dib.fr-fil { margin-left: 0; text-align: left;}img.fr-dib { margin: 5px auto; display: block; float: none;}img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC;}img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc;}img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;}</style><style> p { margin: 0; } span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px; } blockquote blockquote { border-color: #00bcd4; color: #00bcd4; } blockquote blockquote blockquote { border-color: #43a047; color: #43a047; } table.grid { border-collapse: collapse; } table.grid td, table.grid th { border: 1px solid #ddd; } .fr-fic.fr-dib { display: block; margin: 5px auto; } .fr-fic.fr-dib.fr-fir { text-align: right; margin: 5px 0 5px auto; } .fr-fic.fr-dib.fr-fil { text-align: left; margin: 5px auto 5px 0; } .fr-fic.fr-dii { float: none; margin: 5px auto; } .fr-fic.fr-dii.fr-fil { float: left; margin: 5px auto; } .fr-fic.fr-dii.fr-fir { float: right; margin: 5px auto; } img.fr-dib.fr-fir { margin-right: 0; text-align: right; } img.fr-dib.fr-fil { margin-left: 0; text-align: left; } img.fr-dib { margin: 5px auto; display: block; float: none; } img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC; } img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc; } img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box; } </style><div><p><br></p><p id="isPasted"><span style="font-size: 24pt;"><strong>Setup HaloDBLookupService on your server</strong></span></p><p><br></p><p>This is a Web-facing API that should be set up on your network on a server which can access both the internally facing application and that can be accept https traffic from the Halo API.</p><p><br></p><p><br></p><p><strong><span style="font-size: 24pt;">Certificate</span></strong></p><p><br></p><p>The Halo API and HaloDatabaseLookupService need to share a common self signed certificate. The Halo API signs the request with a certificate, and HaloDatabaseLookupService validates the signature using the same certificate before processing the request.</p><p><br></p><p>It&#39;s recommended you create a self-signed certificate. You&#39;ll be uploading this certificate to your Halo database so don&#39;t use a certificate that you use for something else already, or one that you use for SSL. This can be done in configuration &gt; advanced settings &gt; certificates.</p><p><br></p><p>This certificate needs to be installed to the Trusted Root of the LocalMachine of the server running HaloDBLookupService.</p><p><br></p><p>For additional security you can specify the Issuer in appsettings.json (e.g &quot;CN=MyDomain&quot;) and HaloDBLookupService will also validate the Issuer.</p><p><br></p><p><br></p><p id="isPasted"><strong><span style="font-size: 24pt;">Server Specifications</span></strong></p><p><br></p><p>1. Windows Server 2012+ as OS.</p><p><br></p><p>2. Within server manager, ensure asp.net 4.5, .net Framework 4.5 and .net Framework 3.5 are installed.</p><p><br></p><p>3. Install dependencies:</p><p><br></p><p>- DotNet Hosting 6: <a data-fr-linked="true" href="https://download.visualstudio.microsoft.com/download/pr/b50f2f63-23ed-4c96-9b38-71d319107d1b/26f8c79415eccaef1f2e0614e10cd701/dotnet-hosting-6.0.21-win.exe">https://download.visualstudio.microsoft.com/download/pr/b50f2f63-23ed-4c96-9b38-71d319107d1b/26f8c79415eccaef1f2e0614e10cd701/dotnet-hosting-6.0.21-win.exe</a></p><p><br></p><p>- URL rewrite: <a data-fr-linked="true" href="https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_en-US.msi">https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_en-US.msi</a></p><p><br></p><p>- C++ redistributables: <a data-fr-linked="true" href="https://aka.ms/vs/17/release/vc_redist.x64.exe">https://aka.ms/vs/17/release/vc_redist.x64.exe</a></p><p><br></p><p><br></p><p id="isPasted"><strong><span style="font-size: 24pt;">Service Installation</span></strong></p><p><br></p><p>1. Download the latest HaloDBLookupService from <a data-fr-linked="true" href="https://s3.haloitsm.com/ftp/HaloDBLookupService.zip">https://s3.haloitsm.com/ftp/HaloDBLookupService.zip</a>.</p><p><br></p><p>2. Extract HaloDBLookupService.zip and place the contents of the &quot;HaloDBLookupService_Version&quot; directory in a directory called &quot;HaloDBLookupService&quot; in the root of the C drive.</p><p><br></p><p>3. Open IIS, create a new site with the Physical Path as the path to the WebApp directory you created (C:HaloDBLookupService).</p><p><br></p><p>4. Open C:WindowsSystem32inetsrvConfigapplicationHost.config. Check the nodes for &ldquo;modules&rdquo; and &ldquo;handlers&rdquo; have overrideModeDefault=&quot;Allow&quot;. If not, change &ldquo;Deny&rdquo; to &ldquo;Allow&rdquo; and save.</p><p><br></p><p>5. Rename appsettings.default.json in C:HaloDBLookupService to appsettings.json.</p><p><br></p><p>6. Start the site and browse to <a data-fr-linked="true" href="http://your-new-sites-url/health">http://your-new-sites-url/health</a>. You should get a json response with some information and application health. If this does not work follow the troubleshooting steps below.</p><p><br></p><p>7. Get a public url for your site with an SSL certificate. And do the test in step 6 again.</p><p><br></p><p>8. IIS (Internet Information Services) must be enabled on the server.</p><p><br></p><p><br></p><p><strong><span style="font-size: 24pt;">Setting up the Custom Integration in Halo</span></strong></p><p><br></p><p>1. You can go to Configuration &gt; Integrations &gt; Custom Integrations.</p><p><br></p><p>2. Set &quot;API Accessibility&quot; to &quot;Internally accessible only, use a proxy&quot;.&nbsp;</p><p><br></p><p id="isPasted">3. HaloDBLookupService URL = The base url you configured in step 7 of &quot;Setup HaloDBLookupService on your server&quot;. E.g &quot;<a data-fr-linked="true" href="https://dblookups.mycompany.com">https://dblookups.mycompany.com</a>&quot;. Do not include a trailing slash.</p><p><br></p><p>4. Connection Name = leave blank to use DefaultConnection, or populate the name of the connection you want to use if using another connection you created in step 3 of &quot;Database Connection&quot;.</p><p><br></p><p>5. Certificate = Pick the certificate you added to Halo in the &quot;Certificate&quot; section above.</p><p><br></p><p>6. Configure both the authentication and the Custom Integration methods (i.e. API requests) as you would normally.</p><p><br></p><p>7. Save the record.</p><p><br></p><p><br></p><p><strong><span style="font-size: 24pt;">Upgrading HaloDBLookupService</span></strong></p><p><br></p><p>Updating HaloDBLookupService is a matter of obtaining the new files, and overwriting the old ones. Please ensure that you do not delete or overwrite your appsettings.json file.</p></div>
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.