<?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 SSO Setup for AD-Based Integrated Windows Authentication in SAS 9.4 VA in SAS Visual Analytics</title>
    <link>https://communities.sas.com/t5/SAS-Visual-Analytics/SSO-Setup-for-AD-Based-Integrated-Windows-Authentication-in-SAS/m-p/968236#M18801</link>
    <description>&lt;DIV&gt;&lt;DIV&gt;Hi everyone,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I wanted to share the purpose behind a technical guide I recently put together. I faced quite a few challenges while setting up SSO—especially with the keytab configuration—for Kerberos-based Integrated Windows Authentication (IWA) in a SAS environment connected to Microsoft Active Directory.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Since there wasn't much help available around keytab setup, I decided to document the entire process. The article provides a step-by-step walkthrough for configuring and validating the setup needed to support Kerberos authentication, along with LDAP-based user access for SAS web applications.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;****************CHECKLIST*********************&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;(To be Performed By AD/Infrastructure Team)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;Category Steps and Checklist&lt;/DIV&gt;&lt;DIV&gt;Active Directory Account Configuration: To be Performed on the AD Server • Create a New/Existing Account for SSO authentication.&lt;/DIV&gt;&lt;DIV&gt;• AD service account must have read access to the LDAP directory to retrieve user and group information.&lt;/DIV&gt;&lt;DIV&gt;• Read access to the OU (Organizational Unit) and CN (Common Name) hierarchy used for authentication.&lt;/DIV&gt;&lt;DIV&gt;Account Options in Active Directory:&lt;/DIV&gt;&lt;DIV&gt;The following settings must be enabled for the user created in AD (e.g., keytab user) within Active Directory • This account supports Kerberos AES 256-bit encryption.&lt;/DIV&gt;&lt;DIV&gt;• This account supports Kerberos AES 128-bit encryption.&lt;/DIV&gt;&lt;DIV&gt;• These options can be configured by navigating to:&lt;/DIV&gt;&lt;DIV&gt;Active Directory Users and Computers → [User Object] → Properties → Account → Account Options&lt;/DIV&gt;&lt;DIV&gt;Sample screenshot from AD server once user is created:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;C. STEPS TO BE PERFORMED BY ACTIVE-DIRECTORY ADMINISTRATOR&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Below are the step-by-step processes/steps which need to be performed by the AD/infrastructure administrator&lt;/DIV&gt;&lt;DIV&gt;Step 1 – Creating the User/service account in AD (Active Directory)&lt;/DIV&gt;&lt;DIV&gt;First and foremost, the requirement is to create the user /service account in Active directory. This identity will be used to create the Kerberos file and read ad.&lt;/DIV&gt;&lt;DIV&gt;• Create the user/service account in the active directory e.g. account created is keytab.&lt;/DIV&gt;&lt;DIV&gt;• Make sure that “This account supports Kerberos AES 128 bit encryption” and “This account supports Kerberos AES 256 bit encryption” is checked inside the Account&amp;nbsp; account options.&lt;/DIV&gt;&lt;DIV&gt;• Also, make that password does not expire&lt;/DIV&gt;&lt;DIV&gt;• The username and password along with the OU, CN, etc must be shared with the application team (SASVADashBoard Team).&lt;/DIV&gt;&lt;DIV&gt;Step 2: SPN Registration&lt;/DIV&gt;&lt;DIV&gt;The next step is to perform the SPN registration in the AD. Please make sure that the SPN is registered to the account created in step 1 and not to some other account. If it is registered to some other account, delete the SPN.&lt;/DIV&gt;&lt;DIV&gt;Check for registered SPNs related to the server using the below command&lt;/DIV&gt;&lt;DIV&gt;• Command : setspn -Q */&amp;lt;SERVERNAME&amp;gt;.&amp;lt;DOMAIN&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;Here the “servername.domain” is the actual server on which SASVADashBoard is hosted.&lt;/DIV&gt;&lt;DIV&gt;In-case SPNs are already created then delete using the below command:&lt;/DIV&gt;&lt;DIV&gt;• Command: Delete SPNs&lt;/DIV&gt;&lt;DIV&gt;e.g. Delete HTTP/SASVADashBoard.abc.com&amp;nbsp; (sasnode.abc-xyz.com is just for demonstration)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Create SPN with the Newly created user as created in Step 1:&lt;/DIV&gt;&lt;DIV&gt;• Command: setspn -A HTTP/&amp;lt;URL of Application&amp;gt; &amp;lt;ADuser&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;Here the &amp;lt;URL of the Application&amp;gt; will be SASVADashBoard.abc.com which is the URL of SASVADashBoard and &amp;lt;AD User&amp;gt; is the user created in step 1.&lt;/DIV&gt;&lt;DIV&gt;e.g setspn -A HTTP/ SASVADashBoard.abc.com keytab&lt;/DIV&gt;&lt;DIV&gt;Ensure SPNs are not simultaneously registered under both the user account and the computer account, as this will cause Kerberos ticket negotiation to fail.&lt;/DIV&gt;&lt;DIV&gt;Step 3: SPN Validation&lt;/DIV&gt;&lt;DIV&gt;Confirm that the SPNs are correctly linked to the intended user account by running the below command.&lt;/DIV&gt;&lt;DIV&gt;• Command: setspn -L &amp;lt;AD_USERNAME&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;Here the &amp;lt;AD_Username&amp;gt; is the same user created as per step 1. The output should show the SPN name registered as per the step 2.&lt;/DIV&gt;&lt;DIV&gt;Step 4: Keytab File Generation&lt;/DIV&gt;&lt;DIV&gt;Next step is to generate the keytab file which need to be shared with the application team (SASVADashBoard Team).&lt;/DIV&gt;&lt;DIV&gt;From the AD server Open the PowerShell with Admin Privileges and Run below commands:&lt;/DIV&gt;&lt;DIV&gt;• ktpass -princ HTTP/&amp;lt;hostname&amp;gt;.&amp;lt;domain&amp;gt;@&amp;lt;domain&amp;gt; -mapuser &amp;lt;user&amp;gt;@&amp;lt;DOMAIN&amp;gt; -pass &amp;lt;PASSWORD&amp;gt; -ptype KRB5_NT_PRINCIPAL -crypto all -out &amp;lt;keyTabName&amp;gt;.keytab&lt;/DIV&gt;&lt;DIV&gt;• ktpass -princ HTTP/&amp;lt;hostname&amp;gt;.&amp;lt;domain&amp;gt;@&amp;lt;domain&amp;gt; -mapuser &amp;lt;user&amp;gt;@&amp;lt;DOMAIN&amp;gt; -pass &amp;lt;PASSWORD&amp;gt; -ptype KRB5_NT_PRINCIPAL -crypto AES128-SHA1 -out &amp;lt;keyTabName&amp;gt;.keytab&lt;/DIV&gt;&lt;DIV&gt;• ktpass -princ HTTP/&amp;lt;hostname&amp;gt;.&amp;lt;domain&amp;gt;@&amp;lt;domain&amp;gt; -mapuser &amp;lt;user&amp;gt;@&amp;lt;DOMAIN&amp;gt; -pass &amp;lt;PASSWORD&amp;gt; -ptype KRB5_NT_PRINCIPAL -crypto AES256-SHA1 -out &amp;lt;keyTabName&amp;gt;.keytab&lt;/DIV&gt;&lt;DIV&gt;Total 3 files will be generated. These files need to be shared with the SASVADashBoard Application team.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;D. Information to be Shared with Application Team of SASVADashBoard:&lt;/DIV&gt;&lt;DIV&gt;• Username &amp;amp; password of the user created at step 1.&lt;/DIV&gt;&lt;DIV&gt;• OU &amp;amp; DC information for the user created at Step 1.&lt;/DIV&gt;&lt;DIV&gt;• LDAP information like IP/Name , port number etc.&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;• 3 .keytab files generated at step 4.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Steps for Implementing IWA (Integrated Windows Authentication) After Prerequisites Are Completed&lt;/DIV&gt;&lt;DIV&gt;1. Verify Keytab File&lt;/DIV&gt;&lt;DIV&gt;Once the keytab file is generated, verify its contents using the klist command.&lt;/DIV&gt;&lt;DIV&gt;Windows:&lt;/DIV&gt;&lt;DIV&gt;klist -k -e D:/keytab/12apr/saskeytab_WD.keytab&lt;/DIV&gt;&lt;DIV&gt;Linux Equivalent:&lt;/DIV&gt;&lt;DIV&gt;klist -k -e /path/to/saskeytab_WD.keytab&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;2. Check JRE Version on the Server&lt;/DIV&gt;&lt;DIV&gt;Command (Windows):&lt;/DIV&gt;&lt;DIV&gt;From E:\SASHome\SASPrivateJavaRuntimeEnvironment\9.4\jre\bin\java&amp;nbsp; open the cmd and enter the command as&lt;/DIV&gt;&lt;DIV&gt;java –version&lt;/DIV&gt;&lt;DIV&gt;Equivalent path in linux -&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/path/to/java -version&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;3. Confirm User is Linked to Service Account&lt;/DIV&gt;&lt;DIV&gt;setspn -L prathmesh.howale&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;4. Create or Modify krb5.ini / krb5.conf&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Linux Path: /etc/krb5.conf&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Windows Path: C:\Windows\krb5.ini&lt;/DIV&gt;&lt;DIV&gt;Content of file (krb5.ini):&lt;/DIV&gt;&lt;DIV&gt;[libdefaults]&lt;/DIV&gt;&lt;DIV&gt;default_realm = SOOS.COM&lt;/DIV&gt;&lt;DIV&gt;forwardable = true&lt;/DIV&gt;&lt;DIV&gt;default_tkt_enctypes = aes256-cts&lt;/DIV&gt;&lt;DIV&gt;default_tgs_enctypes = aes256-cts&lt;/DIV&gt;&lt;DIV&gt;permitted_enctypes = aes256-cts&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;[realms]&lt;/DIV&gt;&lt;DIV&gt;SOOS.COM = {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; kdc = adServer.SOOS.com&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;[domain_realm]&lt;/DIV&gt;&lt;DIV&gt;SOOS.com = SOOS.COM&lt;/DIV&gt;&lt;DIV&gt;.SOOS.com = SOOS.COM&lt;/DIV&gt;&lt;DIV&gt;abc-xyz.com=SOOS.COM&lt;/DIV&gt;&lt;DIV&gt;.abc-xyz.com=SOOS.COM&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Note: Above 2 lines are for if the application is running on some other URL compared to domain name.&lt;/DIV&gt;&lt;DIV&gt;5. Generate Kerberos Ticket Using Keytab&lt;/DIV&gt;&lt;DIV&gt;E:\SASHome\SASPrivateJavaRuntimeEnvironment\9.4\jre\bin\kinit.exe -k -t D:\keytab\30apr\sas.keytab HTTP/sasnode.abc-xyz.com@SOOS.COM&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;alternative&amp;nbsp; with decoding (InCase RCA for Failure)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;E:\SASHome\SASPrivateJavaRuntimeEnvironment\9.4\jre\bin&amp;gt; kinit "-J-Dsun.security.krb5.debug=true" -k -t D:/keytab/30apr/sas.keytab&amp;nbsp; &amp;nbsp;HTTP/sasnode.abc-xyz.com@SOOS.COM -J-Djava.security.krb5.conf=C:/Windows/krb5.ini&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;6. Verify LDAP Access&lt;/DIV&gt;&lt;DIV&gt;ldapsearch -x -H ldap://adServer.SOOS.com -D "CN=keytab,OU=sas,DC=SOOS,DC=com" -w 'password' -b "DC=SOOS,DC=com"&lt;/DIV&gt;&lt;DIV&gt;If ldapsearch is not already available, try to install from the default Linux packages&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Configure the Realm for SAS Web Application Serve&lt;/DIV&gt;&lt;DIV&gt;1. Locate the existing /Server/Service/Engine/Realm definition in the SAS-configuration-directory\Levn\Web\WebAppServer\SASServern_m\conf\server.xml file.&lt;/DIV&gt;&lt;DIV&gt;Note: If you have more than one web application server instance, you must make the following changes to each one.&lt;/DIV&gt;&lt;DIV&gt;Modify the realm information:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Configure Fallback Authentication&lt;/DIV&gt;&lt;DIV&gt;To configure IWA fallback authentication to SAS form-based authentication, follow these steps:&lt;/DIV&gt;&lt;DIV&gt;Add in E:\SASConfig\Lev1\Web\WebAppServer\SASServer1_1\conf\Catalina\localhost\SASLogon.xml&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; --&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;Add inside the &amp;lt;Context&amp;gt; tag:&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;lt;Valve&amp;nbsp; &amp;nbsp; &amp;nbsp;className="com.sas.vfabrictcsvr.authenticator.SasFallbackAuthenticatorValve"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; authMethod="SPNEGO" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Uncomment the fallback error page in: E:\SASConfig\Lev1\Web\WebAppServer\SASServer1_1\sas_webapps\sas.svcs.logon.war\WEB-INF\web.xml&lt;/DIV&gt;&lt;DIV&gt;&amp;lt;error-page&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;error-code&amp;gt;401&amp;lt;/error-code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;location&amp;gt;/WEB-INF/view/jsp/default/ui/401Fallback.jsp&amp;lt;/location&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/error-page&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;9. Configure jaas.config&lt;/DIV&gt;&lt;DIV&gt;Directory of E:\SASConfig\Lev1\Web\WebAppServer\SASServer12_1\conf jaas.config&lt;/DIV&gt;&lt;DIV&gt;Update the PFS section to include idpropagation and sspisecuritypackagelist. Do not modify other parameters.&lt;/DIV&gt;&lt;DIV&gt;NOTE::place ur trustedpw&lt;/DIV&gt;&lt;DIV&gt;PFS {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; com.sas.services.security.login.O.comoginModule required&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "debug"="false"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "aliasdomain"="DefaultAuth"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "port"="8561"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "domain"="DefaultAuth"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "host"="sasnode.abc-xyz.com"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "repository"="Foundation"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "trusteduser"="sastrust@saspw"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "trustedpw"="{sas002}***************************"&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;"idpropagation"="sspi"&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"sspisecuritypackagelist"="KERBEROS"&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; ;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; };&lt;/DIV&gt;&lt;DIV&gt;10. Comment out Default Authentication (SPNEGO and FORM)&lt;/DIV&gt;&lt;DIV&gt;In the appropriate web.xml file inside &amp;lt;web-app&amp;gt;:&lt;/DIV&gt;&lt;DIV&gt;&amp;lt;!-- Enable SPNEGO authentication --&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;!--&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;security-constraint&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;web-resource-collection&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;web-resource-name&amp;gt;HTMLHostManager and HostManager commands&amp;lt;/web-resource-name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;url-pattern&amp;gt;/login&amp;lt;/url-pattern&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/web-resource-collection&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;auth-constraint&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;role-name&amp;gt;*&amp;lt;/role-name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/auth-constraint&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/security-constraint&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;login-config&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;auth-method&amp;gt;SPNEGO&amp;lt;/auth-method&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;realm-name&amp;gt;Tomcat Host Manager Application&amp;lt;/realm-name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/login-config&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; --&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;!-- Enable FORM authentication --&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;!--security-constraint&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;web-resource-collection&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;web-resource-name&amp;gt;HTMLHostManager and HostManager commands&amp;lt;/web-resource-name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;url-pattern&amp;gt;/login&amp;lt;/url-pattern&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/web-resource-collection&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;auth-constraint&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;role-name&amp;gt;*&amp;lt;/role-name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/auth-constraint&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/security-constraint --&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;!-- login-config&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;auth-method&amp;gt;FORM&amp;lt;/auth-method&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;form-login-config&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;form-login-page&amp;gt;/formLogin&amp;lt;/form-login-page&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;form-error-page&amp;gt;/formLoginError&amp;lt;/form-error-page&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/form-login-config&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;realm-name&amp;gt;Tomcat Host Manager Application&amp;lt;/realm-name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/login-config --&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Hope this helps anyone going through a similar setup.&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Thu, 05 Jun 2025 11:13:00 GMT</pubDate>
    <dc:creator>PrathmeshX</dc:creator>
    <dc:date>2025-06-05T11:13:00Z</dc:date>
    <item>
      <title>SSO Setup for AD-Based Integrated Windows Authentication in SAS 9.4 VA</title>
      <link>https://communities.sas.com/t5/SAS-Visual-Analytics/SSO-Setup-for-AD-Based-Integrated-Windows-Authentication-in-SAS/m-p/968236#M18801</link>
      <description>&lt;DIV&gt;&lt;DIV&gt;Hi everyone,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I wanted to share the purpose behind a technical guide I recently put together. I faced quite a few challenges while setting up SSO—especially with the keytab configuration—for Kerberos-based Integrated Windows Authentication (IWA) in a SAS environment connected to Microsoft Active Directory.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Since there wasn't much help available around keytab setup, I decided to document the entire process. The article provides a step-by-step walkthrough for configuring and validating the setup needed to support Kerberos authentication, along with LDAP-based user access for SAS web applications.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;****************CHECKLIST*********************&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;(To be Performed By AD/Infrastructure Team)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;Category Steps and Checklist&lt;/DIV&gt;&lt;DIV&gt;Active Directory Account Configuration: To be Performed on the AD Server • Create a New/Existing Account for SSO authentication.&lt;/DIV&gt;&lt;DIV&gt;• AD service account must have read access to the LDAP directory to retrieve user and group information.&lt;/DIV&gt;&lt;DIV&gt;• Read access to the OU (Organizational Unit) and CN (Common Name) hierarchy used for authentication.&lt;/DIV&gt;&lt;DIV&gt;Account Options in Active Directory:&lt;/DIV&gt;&lt;DIV&gt;The following settings must be enabled for the user created in AD (e.g., keytab user) within Active Directory • This account supports Kerberos AES 256-bit encryption.&lt;/DIV&gt;&lt;DIV&gt;• This account supports Kerberos AES 128-bit encryption.&lt;/DIV&gt;&lt;DIV&gt;• These options can be configured by navigating to:&lt;/DIV&gt;&lt;DIV&gt;Active Directory Users and Computers → [User Object] → Properties → Account → Account Options&lt;/DIV&gt;&lt;DIV&gt;Sample screenshot from AD server once user is created:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;C. STEPS TO BE PERFORMED BY ACTIVE-DIRECTORY ADMINISTRATOR&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Below are the step-by-step processes/steps which need to be performed by the AD/infrastructure administrator&lt;/DIV&gt;&lt;DIV&gt;Step 1 – Creating the User/service account in AD (Active Directory)&lt;/DIV&gt;&lt;DIV&gt;First and foremost, the requirement is to create the user /service account in Active directory. This identity will be used to create the Kerberos file and read ad.&lt;/DIV&gt;&lt;DIV&gt;• Create the user/service account in the active directory e.g. account created is keytab.&lt;/DIV&gt;&lt;DIV&gt;• Make sure that “This account supports Kerberos AES 128 bit encryption” and “This account supports Kerberos AES 256 bit encryption” is checked inside the Account&amp;nbsp; account options.&lt;/DIV&gt;&lt;DIV&gt;• Also, make that password does not expire&lt;/DIV&gt;&lt;DIV&gt;• The username and password along with the OU, CN, etc must be shared with the application team (SASVADashBoard Team).&lt;/DIV&gt;&lt;DIV&gt;Step 2: SPN Registration&lt;/DIV&gt;&lt;DIV&gt;The next step is to perform the SPN registration in the AD. Please make sure that the SPN is registered to the account created in step 1 and not to some other account. If it is registered to some other account, delete the SPN.&lt;/DIV&gt;&lt;DIV&gt;Check for registered SPNs related to the server using the below command&lt;/DIV&gt;&lt;DIV&gt;• Command : setspn -Q */&amp;lt;SERVERNAME&amp;gt;.&amp;lt;DOMAIN&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;Here the “servername.domain” is the actual server on which SASVADashBoard is hosted.&lt;/DIV&gt;&lt;DIV&gt;In-case SPNs are already created then delete using the below command:&lt;/DIV&gt;&lt;DIV&gt;• Command: Delete SPNs&lt;/DIV&gt;&lt;DIV&gt;e.g. Delete HTTP/SASVADashBoard.abc.com&amp;nbsp; (sasnode.abc-xyz.com is just for demonstration)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Create SPN with the Newly created user as created in Step 1:&lt;/DIV&gt;&lt;DIV&gt;• Command: setspn -A HTTP/&amp;lt;URL of Application&amp;gt; &amp;lt;ADuser&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;Here the &amp;lt;URL of the Application&amp;gt; will be SASVADashBoard.abc.com which is the URL of SASVADashBoard and &amp;lt;AD User&amp;gt; is the user created in step 1.&lt;/DIV&gt;&lt;DIV&gt;e.g setspn -A HTTP/ SASVADashBoard.abc.com keytab&lt;/DIV&gt;&lt;DIV&gt;Ensure SPNs are not simultaneously registered under both the user account and the computer account, as this will cause Kerberos ticket negotiation to fail.&lt;/DIV&gt;&lt;DIV&gt;Step 3: SPN Validation&lt;/DIV&gt;&lt;DIV&gt;Confirm that the SPNs are correctly linked to the intended user account by running the below command.&lt;/DIV&gt;&lt;DIV&gt;• Command: setspn -L &amp;lt;AD_USERNAME&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;Here the &amp;lt;AD_Username&amp;gt; is the same user created as per step 1. The output should show the SPN name registered as per the step 2.&lt;/DIV&gt;&lt;DIV&gt;Step 4: Keytab File Generation&lt;/DIV&gt;&lt;DIV&gt;Next step is to generate the keytab file which need to be shared with the application team (SASVADashBoard Team).&lt;/DIV&gt;&lt;DIV&gt;From the AD server Open the PowerShell with Admin Privileges and Run below commands:&lt;/DIV&gt;&lt;DIV&gt;• ktpass -princ HTTP/&amp;lt;hostname&amp;gt;.&amp;lt;domain&amp;gt;@&amp;lt;domain&amp;gt; -mapuser &amp;lt;user&amp;gt;@&amp;lt;DOMAIN&amp;gt; -pass &amp;lt;PASSWORD&amp;gt; -ptype KRB5_NT_PRINCIPAL -crypto all -out &amp;lt;keyTabName&amp;gt;.keytab&lt;/DIV&gt;&lt;DIV&gt;• ktpass -princ HTTP/&amp;lt;hostname&amp;gt;.&amp;lt;domain&amp;gt;@&amp;lt;domain&amp;gt; -mapuser &amp;lt;user&amp;gt;@&amp;lt;DOMAIN&amp;gt; -pass &amp;lt;PASSWORD&amp;gt; -ptype KRB5_NT_PRINCIPAL -crypto AES128-SHA1 -out &amp;lt;keyTabName&amp;gt;.keytab&lt;/DIV&gt;&lt;DIV&gt;• ktpass -princ HTTP/&amp;lt;hostname&amp;gt;.&amp;lt;domain&amp;gt;@&amp;lt;domain&amp;gt; -mapuser &amp;lt;user&amp;gt;@&amp;lt;DOMAIN&amp;gt; -pass &amp;lt;PASSWORD&amp;gt; -ptype KRB5_NT_PRINCIPAL -crypto AES256-SHA1 -out &amp;lt;keyTabName&amp;gt;.keytab&lt;/DIV&gt;&lt;DIV&gt;Total 3 files will be generated. These files need to be shared with the SASVADashBoard Application team.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;D. Information to be Shared with Application Team of SASVADashBoard:&lt;/DIV&gt;&lt;DIV&gt;• Username &amp;amp; password of the user created at step 1.&lt;/DIV&gt;&lt;DIV&gt;• OU &amp;amp; DC information for the user created at Step 1.&lt;/DIV&gt;&lt;DIV&gt;• LDAP information like IP/Name , port number etc.&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;• 3 .keytab files generated at step 4.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Steps for Implementing IWA (Integrated Windows Authentication) After Prerequisites Are Completed&lt;/DIV&gt;&lt;DIV&gt;1. Verify Keytab File&lt;/DIV&gt;&lt;DIV&gt;Once the keytab file is generated, verify its contents using the klist command.&lt;/DIV&gt;&lt;DIV&gt;Windows:&lt;/DIV&gt;&lt;DIV&gt;klist -k -e D:/keytab/12apr/saskeytab_WD.keytab&lt;/DIV&gt;&lt;DIV&gt;Linux Equivalent:&lt;/DIV&gt;&lt;DIV&gt;klist -k -e /path/to/saskeytab_WD.keytab&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;2. Check JRE Version on the Server&lt;/DIV&gt;&lt;DIV&gt;Command (Windows):&lt;/DIV&gt;&lt;DIV&gt;From E:\SASHome\SASPrivateJavaRuntimeEnvironment\9.4\jre\bin\java&amp;nbsp; open the cmd and enter the command as&lt;/DIV&gt;&lt;DIV&gt;java –version&lt;/DIV&gt;&lt;DIV&gt;Equivalent path in linux -&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/path/to/java -version&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;3. Confirm User is Linked to Service Account&lt;/DIV&gt;&lt;DIV&gt;setspn -L prathmesh.howale&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;4. Create or Modify krb5.ini / krb5.conf&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Linux Path: /etc/krb5.conf&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Windows Path: C:\Windows\krb5.ini&lt;/DIV&gt;&lt;DIV&gt;Content of file (krb5.ini):&lt;/DIV&gt;&lt;DIV&gt;[libdefaults]&lt;/DIV&gt;&lt;DIV&gt;default_realm = SOOS.COM&lt;/DIV&gt;&lt;DIV&gt;forwardable = true&lt;/DIV&gt;&lt;DIV&gt;default_tkt_enctypes = aes256-cts&lt;/DIV&gt;&lt;DIV&gt;default_tgs_enctypes = aes256-cts&lt;/DIV&gt;&lt;DIV&gt;permitted_enctypes = aes256-cts&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;[realms]&lt;/DIV&gt;&lt;DIV&gt;SOOS.COM = {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; kdc = adServer.SOOS.com&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;[domain_realm]&lt;/DIV&gt;&lt;DIV&gt;SOOS.com = SOOS.COM&lt;/DIV&gt;&lt;DIV&gt;.SOOS.com = SOOS.COM&lt;/DIV&gt;&lt;DIV&gt;abc-xyz.com=SOOS.COM&lt;/DIV&gt;&lt;DIV&gt;.abc-xyz.com=SOOS.COM&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Note: Above 2 lines are for if the application is running on some other URL compared to domain name.&lt;/DIV&gt;&lt;DIV&gt;5. Generate Kerberos Ticket Using Keytab&lt;/DIV&gt;&lt;DIV&gt;E:\SASHome\SASPrivateJavaRuntimeEnvironment\9.4\jre\bin\kinit.exe -k -t D:\keytab\30apr\sas.keytab HTTP/sasnode.abc-xyz.com@SOOS.COM&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;alternative&amp;nbsp; with decoding (InCase RCA for Failure)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;E:\SASHome\SASPrivateJavaRuntimeEnvironment\9.4\jre\bin&amp;gt; kinit "-J-Dsun.security.krb5.debug=true" -k -t D:/keytab/30apr/sas.keytab&amp;nbsp; &amp;nbsp;HTTP/sasnode.abc-xyz.com@SOOS.COM -J-Djava.security.krb5.conf=C:/Windows/krb5.ini&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;6. Verify LDAP Access&lt;/DIV&gt;&lt;DIV&gt;ldapsearch -x -H ldap://adServer.SOOS.com -D "CN=keytab,OU=sas,DC=SOOS,DC=com" -w 'password' -b "DC=SOOS,DC=com"&lt;/DIV&gt;&lt;DIV&gt;If ldapsearch is not already available, try to install from the default Linux packages&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Configure the Realm for SAS Web Application Serve&lt;/DIV&gt;&lt;DIV&gt;1. Locate the existing /Server/Service/Engine/Realm definition in the SAS-configuration-directory\Levn\Web\WebAppServer\SASServern_m\conf\server.xml file.&lt;/DIV&gt;&lt;DIV&gt;Note: If you have more than one web application server instance, you must make the following changes to each one.&lt;/DIV&gt;&lt;DIV&gt;Modify the realm information:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Configure Fallback Authentication&lt;/DIV&gt;&lt;DIV&gt;To configure IWA fallback authentication to SAS form-based authentication, follow these steps:&lt;/DIV&gt;&lt;DIV&gt;Add in E:\SASConfig\Lev1\Web\WebAppServer\SASServer1_1\conf\Catalina\localhost\SASLogon.xml&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; --&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;Add inside the &amp;lt;Context&amp;gt; tag:&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;lt;Valve&amp;nbsp; &amp;nbsp; &amp;nbsp;className="com.sas.vfabrictcsvr.authenticator.SasFallbackAuthenticatorValve"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; authMethod="SPNEGO" /&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Uncomment the fallback error page in: E:\SASConfig\Lev1\Web\WebAppServer\SASServer1_1\sas_webapps\sas.svcs.logon.war\WEB-INF\web.xml&lt;/DIV&gt;&lt;DIV&gt;&amp;lt;error-page&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;error-code&amp;gt;401&amp;lt;/error-code&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;location&amp;gt;/WEB-INF/view/jsp/default/ui/401Fallback.jsp&amp;lt;/location&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/error-page&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;9. Configure jaas.config&lt;/DIV&gt;&lt;DIV&gt;Directory of E:\SASConfig\Lev1\Web\WebAppServer\SASServer12_1\conf jaas.config&lt;/DIV&gt;&lt;DIV&gt;Update the PFS section to include idpropagation and sspisecuritypackagelist. Do not modify other parameters.&lt;/DIV&gt;&lt;DIV&gt;NOTE::place ur trustedpw&lt;/DIV&gt;&lt;DIV&gt;PFS {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; com.sas.services.security.login.O.comoginModule required&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "debug"="false"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "aliasdomain"="DefaultAuth"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "port"="8561"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "domain"="DefaultAuth"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "host"="sasnode.abc-xyz.com"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "repository"="Foundation"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "trusteduser"="sastrust@saspw"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "trustedpw"="{sas002}***************************"&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;"idpropagation"="sspi"&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"sspisecuritypackagelist"="KERBEROS"&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; ;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; };&lt;/DIV&gt;&lt;DIV&gt;10. Comment out Default Authentication (SPNEGO and FORM)&lt;/DIV&gt;&lt;DIV&gt;In the appropriate web.xml file inside &amp;lt;web-app&amp;gt;:&lt;/DIV&gt;&lt;DIV&gt;&amp;lt;!-- Enable SPNEGO authentication --&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;!--&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;security-constraint&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;web-resource-collection&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;web-resource-name&amp;gt;HTMLHostManager and HostManager commands&amp;lt;/web-resource-name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;url-pattern&amp;gt;/login&amp;lt;/url-pattern&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/web-resource-collection&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;auth-constraint&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;role-name&amp;gt;*&amp;lt;/role-name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/auth-constraint&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/security-constraint&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;login-config&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;auth-method&amp;gt;SPNEGO&amp;lt;/auth-method&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;realm-name&amp;gt;Tomcat Host Manager Application&amp;lt;/realm-name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/login-config&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; --&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;!-- Enable FORM authentication --&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;!--security-constraint&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;web-resource-collection&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;web-resource-name&amp;gt;HTMLHostManager and HostManager commands&amp;lt;/web-resource-name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;url-pattern&amp;gt;/login&amp;lt;/url-pattern&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/web-resource-collection&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;auth-constraint&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;role-name&amp;gt;*&amp;lt;/role-name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/auth-constraint&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/security-constraint --&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;!-- login-config&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;auth-method&amp;gt;FORM&amp;lt;/auth-method&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;form-login-config&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;form-login-page&amp;gt;/formLogin&amp;lt;/form-login-page&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;form-error-page&amp;gt;/formLoginError&amp;lt;/form-error-page&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/form-login-config&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;realm-name&amp;gt;Tomcat Host Manager Application&amp;lt;/realm-name&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/login-config --&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Hope this helps anyone going through a similar setup.&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Thu, 05 Jun 2025 11:13:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Visual-Analytics/SSO-Setup-for-AD-Based-Integrated-Windows-Authentication-in-SAS/m-p/968236#M18801</guid>
      <dc:creator>PrathmeshX</dc:creator>
      <dc:date>2025-06-05T11:13:00Z</dc:date>
    </item>
  </channel>
</rss>

