<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 "HaloDBLookupService" 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. </p><p><br></p><p>The outcome can be described by the below image, where the HaloDBLookupService is the "Halo Proxy Service" 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's recommended you create a self-signed certificate. You'll be uploading this certificate to your Halo database so don't use a certificate that you use for something else already, or one that you use for SSL. This can be done in configuration > advanced settings > 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 "CN=MyDomain") 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 "HaloDBLookupService_Version" directory in a directory called "HaloDBLookupService" 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 “modules” and “handlers” have overrideModeDefault="Allow". If not, change “Deny” to “Allow” 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 > Integrations > Custom Integrations.</p><p><br></p><p>2. Set "API Accessibility" to "Internally accessible only, use a proxy". </p><p><br></p><p id="isPasted">3. HaloDBLookupService URL = The base url you configured in step 7 of "Setup HaloDBLookupService on your server". E.g "<a data-fr-linked="true" href="https://dblookups.mycompany.com">https://dblookups.mycompany.com</a>". 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 "Database Connection".</p><p><br></p><p>5. Certificate = Pick the certificate you added to Halo in the "Certificate" 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>