<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Kerberos SSO for Captive Portal in General Topics</title>
    <link>https://live.paloaltonetworks.com/t5/general-topics/kerberos-sso-for-captive-portal/m-p/458375#M101896</link>
    <description>&lt;P&gt;Been working through options for gathering userID data on non-domain-joined machines lately, so here's another complete option using Kerberos (krb) SSO.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Create a user in AD (my example, username: krb.palo), check the boxes for:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;User cannot change password&lt;/LI&gt;&lt;LI&gt;Password never expires&lt;/LI&gt;&lt;LI&gt;This account supports Kerberos AES 256 bit encryption&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;NOTE: this account is only a member of “Domain Users”, no special privileges&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;NOTE: this screen capture was taken after running the console commands, so the "User logon name" already shows the SPN&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_0-1641995839136.png" style="width: 441px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38596i939F3DBDA88C821B/image-dimensions/441x288/is-moderation-mode/true?v=v2" width="441" height="288" role="button" title="jbworley_0-1641995839136.png" alt="jbworley_0-1641995839136.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Issue the “setspn” and “ktpass” commands/parameters in the AD server to generate a krb keytab file.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Examples:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT color="#000000"&gt; (your CP URL)&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;(AD user)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;setspn -s HTTP/cp.praktikl.com krb.palo&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;STRONG&gt;(your CP URL)&amp;nbsp; &amp;nbsp; &amp;nbsp; (AD domain)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(AD user)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(AD user pwd)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;ktpass /princ HTTP/cp.praktikl.com@PRAKTIKL.COM /mapuser PRAKTIKL\krb.palo /pass !QAZ2wsx /out &lt;STRONG&gt;(*TRUNCATED*)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;(Location to save keytab file)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;c:\users\domain.admin\desktop\portal.keytab /ptype KRB5_NT_PRINCIPAL /crypto AES256-SHA1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You can see the file created on the desktop above the console window.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_1-1641995839170.png" style="width: 668px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38597iEA0A3072EF8C4C9A/image-dimensions/668x359/is-moderation-mode/true?v=v2" width="668" height="359" role="button" title="jbworley_1-1641995839170.png" alt="jbworley_1-1641995839170.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;On the Palo, add a krb server profile listing all the DCs you want to include.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_2-1641995839174.png" style="width: 451px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38595i37CE86333DC3D0E5/image-dimensions/451x246/is-moderation-mode/true?v=v2" width="451" height="246" role="button" title="jbworley_2-1641995839174.png" alt="jbworley_2-1641995839174.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;On the Palo, create a new authentication profile of kerberos type with the realm and domain (use the netbios name for "User Domain" to ensure proper recording by the FW, if you include “.com, .gov, etc”, format will be “domain.com\user”).&amp;nbsp; Username Modifier didn't seem to make a difference, but still used the "down-level" logon format.&amp;nbsp; In the Single Sign On section, import the keytab file generated on the AD server.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_16-1641997811010.png" style="width: 437px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38617i2BDFE95BD7AFECD0/image-dimensions/437x257/is-moderation-mode/true?v=v2" width="437" height="257" role="button" title="jbworley_16-1641997811010.png" alt="jbworley_16-1641997811010.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;On the Advanced tab, add the user group that has allow access (for this example, used “domain users”).&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_4-1641995839178.png" style="width: 452px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38599i3E4DE87D8B59BD6D/image-dimensions/452x260/is-moderation-mode/true?v=v2" width="452" height="260" role="button" title="jbworley_4-1641995839178.png" alt="jbworley_4-1641995839178.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Next, under “Device/User Identification”, configure the Captive Portal.&amp;nbsp; Check the enable box, tweak the timer values if needed, add the kerberos auth profile, and set up a redirect to a URL (in this case, cp.praktikl.com).&amp;nbsp; You’ll need a DNS record for this and an L3 interface on the firewall for it to connect (will configure that in a next).&amp;nbsp; Also, add in an SSL/TLS Service Profile with a cert containing SAN entries for the URL (using cert w/ *.praktikl.com).&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_5-1641995839180.png" style="width: 455px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38601i7766FD696955C00B/image-dimensions/455x208/is-moderation-mode/true?v=v2" width="455" height="208" role="button" title="jbworley_5-1641995839180.png" alt="jbworley_5-1641995839180.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Configure an interface management profile if needed and allow “ping” and “response pages”.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_6-1641995839181.png" style="width: 454px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38605iDD3C4C45DA4237D6/image-dimensions/454x227/is-moderation-mode/true?v=v2" width="454" height="227" role="button" title="jbworley_6-1641995839181.png" alt="jbworley_6-1641995839181.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Set up an L3 interface to terminate the redirect (keep it in the same zone as the internal zone for boundary traffic and add the Interface management profile previously created).&amp;nbsp; Create a separate virtual router with a static quad-zero route and add the new interface to it.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_7-1641995839182.png" style="width: 638px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38604i4B07826B86B793C4/image-dimensions/638x48/is-moderation-mode/true?v=v2" width="638" height="48" role="button" title="jbworley_7-1641995839182.png" alt="jbworley_7-1641995839182.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_8-1641995839185.png" style="width: 629px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38602i7266C9AB2EBFFF7E/image-dimensions/629x176/is-moderation-mode/true?v=v2" width="629" height="176" role="button" title="jbworley_8-1641995839185.png" alt="jbworley_8-1641995839185.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Create a DNS A record.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_9-1641995839199.png" style="width: 559px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38608i608E4EBBE2AD26BD/image-dimensions/559x176/is-moderation-mode/true?v=v2" width="559" height="176" role="button" title="jbworley_9-1641995839199.png" alt="jbworley_9-1641995839199.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Lastly, create the Authentication Policy.&amp;nbsp; Set the zones according to the traffic, set the user to “any”, set the ports to whatever you need (http/https), add the URL category for the traffic you want to authenticate, and then choose the “default-browser-challenge” option to prompt the user for creds.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;NOTE: Destination URL needs to be decrypted&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_10-1641995839199.png" style="width: 519px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38606i3918EB45FFA109BF/image-dimensions/519x87/is-moderation-mode/true?v=v2" width="519" height="87" role="button" title="jbworley_10-1641995839199.png" alt="jbworley_10-1641995839199.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_11-1641995839201.png" style="width: 514px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38607i5EF92C3C5EBC2BD7/image-dimensions/514x113/is-moderation-mode/true?v=v2" width="514" height="113" role="button" title="jbworley_11-1641995839201.png" alt="jbworley_11-1641995839201.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For testing, verify there is no user cache for the test user/IP you plan to use.&amp;nbsp; In this case, I’m coming from 192.168.3.7.&amp;nbsp; Since I do not have an IP-user-mapping, it is “unknown”.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_12-1641995839202.png" style="width: 517px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38609iFAF8A1C558512CCC/image-dimensions/517x118/is-moderation-mode/true?v=v2" width="517" height="118" role="button" title="jbworley_12-1641995839202.png" alt="jbworley_12-1641995839202.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When I try to browse to &lt;A href="https://www.slack.com" target="_blank"&gt;https://www.slack.com&lt;/A&gt;, I get redirected to “cp.praktikl.com:6080” and the login prompt comes up.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_13-1641995839209.png" style="width: 459px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38611iC91A043E9EC3077A/image-dimensions/459x279/is-moderation-mode/true?v=v2" width="459" height="279" role="button" title="jbworley_13-1641995839209.png" alt="jbworley_13-1641995839209.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Once I log in, my mapping is created and I’m good to go.&amp;nbsp; You see the mapping is from “SSO”.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_14-1641995839212.png" style="width: 458px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38610i6641EA60DDA2B66C/image-dimensions/458x109/is-moderation-mode/true?v=v2" width="458" height="109" role="button" title="jbworley_14-1641995839212.png" alt="jbworley_14-1641995839212.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_15-1641995839214.png" style="width: 442px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38612i1AC01C761B75224D/image-dimensions/442x127/is-moderation-mode/true?v=v2" width="442" height="127" role="button" title="jbworley_15-1641995839214.png" alt="jbworley_15-1641995839214.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The default userID timeout is 60 mins, and the default auth policy cache timeout is 60 mins as well.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;An interesting byproduct of this method: you're authenticating against your kerberos realm, so in the case of active directory, you are literally authenticating via the domain, and if using agents pointed to active directory, the agent will populate a IP-user-mapping too.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also, if you're using username/password for login, use the down-level logon format "DOMAIN\USER" versus user principal name "user@domain.com".&amp;nbsp; This will ensure your IP-user-mapping entries stay consistent and are able to line up with groups acquired via ldap.&lt;/P&gt;</description>
    <pubDate>Wed, 12 Jan 2022 14:33:32 GMT</pubDate>
    <dc:creator>jbworley</dc:creator>
    <dc:date>2022-01-12T14:33:32Z</dc:date>
    <item>
      <title>Kerberos SSO for Captive Portal</title>
      <link>https://live.paloaltonetworks.com/t5/general-topics/kerberos-sso-for-captive-portal/m-p/458375#M101896</link>
      <description>&lt;P&gt;Been working through options for gathering userID data on non-domain-joined machines lately, so here's another complete option using Kerberos (krb) SSO.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Create a user in AD (my example, username: krb.palo), check the boxes for:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;User cannot change password&lt;/LI&gt;&lt;LI&gt;Password never expires&lt;/LI&gt;&lt;LI&gt;This account supports Kerberos AES 256 bit encryption&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;NOTE: this account is only a member of “Domain Users”, no special privileges&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;NOTE: this screen capture was taken after running the console commands, so the "User logon name" already shows the SPN&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_0-1641995839136.png" style="width: 441px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38596i939F3DBDA88C821B/image-dimensions/441x288/is-moderation-mode/true?v=v2" width="441" height="288" role="button" title="jbworley_0-1641995839136.png" alt="jbworley_0-1641995839136.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Issue the “setspn” and “ktpass” commands/parameters in the AD server to generate a krb keytab file.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Examples:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT color="#000000"&gt; (your CP URL)&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;(AD user)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;setspn -s HTTP/cp.praktikl.com krb.palo&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;STRONG&gt;(your CP URL)&amp;nbsp; &amp;nbsp; &amp;nbsp; (AD domain)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(AD user)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(AD user pwd)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;ktpass /princ HTTP/cp.praktikl.com@PRAKTIKL.COM /mapuser PRAKTIKL\krb.palo /pass !QAZ2wsx /out &lt;STRONG&gt;(*TRUNCATED*)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;(Location to save keytab file)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;c:\users\domain.admin\desktop\portal.keytab /ptype KRB5_NT_PRINCIPAL /crypto AES256-SHA1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You can see the file created on the desktop above the console window.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_1-1641995839170.png" style="width: 668px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38597iEA0A3072EF8C4C9A/image-dimensions/668x359/is-moderation-mode/true?v=v2" width="668" height="359" role="button" title="jbworley_1-1641995839170.png" alt="jbworley_1-1641995839170.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;On the Palo, add a krb server profile listing all the DCs you want to include.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_2-1641995839174.png" style="width: 451px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38595i37CE86333DC3D0E5/image-dimensions/451x246/is-moderation-mode/true?v=v2" width="451" height="246" role="button" title="jbworley_2-1641995839174.png" alt="jbworley_2-1641995839174.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;On the Palo, create a new authentication profile of kerberos type with the realm and domain (use the netbios name for "User Domain" to ensure proper recording by the FW, if you include “.com, .gov, etc”, format will be “domain.com\user”).&amp;nbsp; Username Modifier didn't seem to make a difference, but still used the "down-level" logon format.&amp;nbsp; In the Single Sign On section, import the keytab file generated on the AD server.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_16-1641997811010.png" style="width: 437px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38617i2BDFE95BD7AFECD0/image-dimensions/437x257/is-moderation-mode/true?v=v2" width="437" height="257" role="button" title="jbworley_16-1641997811010.png" alt="jbworley_16-1641997811010.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;On the Advanced tab, add the user group that has allow access (for this example, used “domain users”).&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_4-1641995839178.png" style="width: 452px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38599i3E4DE87D8B59BD6D/image-dimensions/452x260/is-moderation-mode/true?v=v2" width="452" height="260" role="button" title="jbworley_4-1641995839178.png" alt="jbworley_4-1641995839178.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Next, under “Device/User Identification”, configure the Captive Portal.&amp;nbsp; Check the enable box, tweak the timer values if needed, add the kerberos auth profile, and set up a redirect to a URL (in this case, cp.praktikl.com).&amp;nbsp; You’ll need a DNS record for this and an L3 interface on the firewall for it to connect (will configure that in a next).&amp;nbsp; Also, add in an SSL/TLS Service Profile with a cert containing SAN entries for the URL (using cert w/ *.praktikl.com).&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_5-1641995839180.png" style="width: 455px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38601i7766FD696955C00B/image-dimensions/455x208/is-moderation-mode/true?v=v2" width="455" height="208" role="button" title="jbworley_5-1641995839180.png" alt="jbworley_5-1641995839180.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Configure an interface management profile if needed and allow “ping” and “response pages”.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_6-1641995839181.png" style="width: 454px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38605iDD3C4C45DA4237D6/image-dimensions/454x227/is-moderation-mode/true?v=v2" width="454" height="227" role="button" title="jbworley_6-1641995839181.png" alt="jbworley_6-1641995839181.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Set up an L3 interface to terminate the redirect (keep it in the same zone as the internal zone for boundary traffic and add the Interface management profile previously created).&amp;nbsp; Create a separate virtual router with a static quad-zero route and add the new interface to it.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_7-1641995839182.png" style="width: 638px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38604i4B07826B86B793C4/image-dimensions/638x48/is-moderation-mode/true?v=v2" width="638" height="48" role="button" title="jbworley_7-1641995839182.png" alt="jbworley_7-1641995839182.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_8-1641995839185.png" style="width: 629px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38602i7266C9AB2EBFFF7E/image-dimensions/629x176/is-moderation-mode/true?v=v2" width="629" height="176" role="button" title="jbworley_8-1641995839185.png" alt="jbworley_8-1641995839185.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Create a DNS A record.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_9-1641995839199.png" style="width: 559px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38608i608E4EBBE2AD26BD/image-dimensions/559x176/is-moderation-mode/true?v=v2" width="559" height="176" role="button" title="jbworley_9-1641995839199.png" alt="jbworley_9-1641995839199.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Lastly, create the Authentication Policy.&amp;nbsp; Set the zones according to the traffic, set the user to “any”, set the ports to whatever you need (http/https), add the URL category for the traffic you want to authenticate, and then choose the “default-browser-challenge” option to prompt the user for creds.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;NOTE: Destination URL needs to be decrypted&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_10-1641995839199.png" style="width: 519px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38606i3918EB45FFA109BF/image-dimensions/519x87/is-moderation-mode/true?v=v2" width="519" height="87" role="button" title="jbworley_10-1641995839199.png" alt="jbworley_10-1641995839199.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_11-1641995839201.png" style="width: 514px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38607i5EF92C3C5EBC2BD7/image-dimensions/514x113/is-moderation-mode/true?v=v2" width="514" height="113" role="button" title="jbworley_11-1641995839201.png" alt="jbworley_11-1641995839201.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For testing, verify there is no user cache for the test user/IP you plan to use.&amp;nbsp; In this case, I’m coming from 192.168.3.7.&amp;nbsp; Since I do not have an IP-user-mapping, it is “unknown”.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_12-1641995839202.png" style="width: 517px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38609iFAF8A1C558512CCC/image-dimensions/517x118/is-moderation-mode/true?v=v2" width="517" height="118" role="button" title="jbworley_12-1641995839202.png" alt="jbworley_12-1641995839202.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When I try to browse to &lt;A href="https://www.slack.com" target="_blank"&gt;https://www.slack.com&lt;/A&gt;, I get redirected to “cp.praktikl.com:6080” and the login prompt comes up.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_13-1641995839209.png" style="width: 459px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38611iC91A043E9EC3077A/image-dimensions/459x279/is-moderation-mode/true?v=v2" width="459" height="279" role="button" title="jbworley_13-1641995839209.png" alt="jbworley_13-1641995839209.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Once I log in, my mapping is created and I’m good to go.&amp;nbsp; You see the mapping is from “SSO”.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_14-1641995839212.png" style="width: 458px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38610i6641EA60DDA2B66C/image-dimensions/458x109/is-moderation-mode/true?v=v2" width="458" height="109" role="button" title="jbworley_14-1641995839212.png" alt="jbworley_14-1641995839212.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jbworley_15-1641995839214.png" style="width: 442px;"&gt;&lt;img src="https://live.paloaltonetworks.com/t5/image/serverpage/image-id/38612i1AC01C761B75224D/image-dimensions/442x127/is-moderation-mode/true?v=v2" width="442" height="127" role="button" title="jbworley_15-1641995839214.png" alt="jbworley_15-1641995839214.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The default userID timeout is 60 mins, and the default auth policy cache timeout is 60 mins as well.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;An interesting byproduct of this method: you're authenticating against your kerberos realm, so in the case of active directory, you are literally authenticating via the domain, and if using agents pointed to active directory, the agent will populate a IP-user-mapping too.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also, if you're using username/password for login, use the down-level logon format "DOMAIN\USER" versus user principal name "user@domain.com".&amp;nbsp; This will ensure your IP-user-mapping entries stay consistent and are able to line up with groups acquired via ldap.&lt;/P&gt;</description>
      <pubDate>Wed, 12 Jan 2022 14:33:32 GMT</pubDate>
      <guid>https://live.paloaltonetworks.com/t5/general-topics/kerberos-sso-for-captive-portal/m-p/458375#M101896</guid>
      <dc:creator>jbworley</dc:creator>
      <dc:date>2022-01-12T14:33:32Z</dc:date>
    </item>
    <item>
      <title>Re: Kerberos SSO for Captive Portal</title>
      <link>https://live.paloaltonetworks.com/t5/general-topics/kerberos-sso-for-captive-portal/m-p/458613#M101919</link>
      <description>&lt;P&gt;&lt;a href="https://live.paloaltonetworks.com/t5/user/viewprofilepage/user-id/83900"&gt;@jbworley&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Amazing stuff ! Thanks for sharing !&lt;/P&gt;</description>
      <pubDate>Thu, 13 Jan 2022 13:57:55 GMT</pubDate>
      <guid>https://live.paloaltonetworks.com/t5/general-topics/kerberos-sso-for-captive-portal/m-p/458613#M101919</guid>
      <dc:creator>kiwi</dc:creator>
      <dc:date>2022-01-13T13:57:55Z</dc:date>
    </item>
  </channel>
</rss>

