Introduction
L'intégration de SAS 9 et de Viya n'a cessé d'évoluer au cours des deux dernières années et est devenue assez robuste. Cependant, des questions concernant les clients SAS 9.4 communiquant avec SAS Viya et les services CAS continuent de faire surface. En conséquence, il a semblé être une bonne idée de revenir brièvement sur ce sujet.
De nombreux utilisateurs SAS Viya sont aussi des utilisateurs SAS 9. Ils connaissent les interfaces client SAS 9 et souhaitent comprendre comment configurer les environnements afin qu'ils puissent communiquer.
Si votre environnement SAS 9.4 est antérieur à SAS 9.4M5 et que vous souhaitez interagir avec un SAS SAS Viya, SAS/CONNECT devra être disponible dans les deux environnements si vous souhaitez travailler avec les données dans CAS.
Si votre environnement SAS 9.4 est en maintenance 5 (ou supérieur) et que vous souhaitez interagir avec un SAS Viya 3.3 (ou supérieur ), il n’est pas nécessaire d’avoir SAS/CONNECT dans l’un ou l’autre environnement. Les fonctionnalités d'intégration CAS intégrées de SAS 9.4M5 permettent à l'utilisateur de communiquer directement à partir d'un client CAS. En effet, à partir de SAS 9.4M5, vous pouvez vous connecter à SAS Cloud Analytic Services (CAS). Aussi, à partir d'une session SAS avec le serveur CAS, vous pouvez charger des données dans la mémoire du serveur CAS, sauvegarder des tables se trouvant dans la mémoire du serveur CAS et soumettre le code d'étape DATA....
Pré-requis
Avant de pouvoir soumettre des programmes au serveur CAS à partir de SAS 9.4, des certificats de sécurité (vault-ca.crt) doivent être en place et vous devez être autorisé à vous connecter au serveur. Vous pouvez-suivre les indications de la documentation
Configure SAS 9.4 Clients to Work with SAS Viya
S'authentifier auprès de CAS
Pour l'authentification il est nécessaire d'utiliser un fichier d'authentification pour permettre la connexion à VIYA, via SAS-Logon. Vous pouvez-suivre les indications de la documentation
Client Authentication Using an Authinfo File
Utilisation d'un fichier d'authentification
Syntaxe
option set=CASCLIENTDEBUG=1 CASAUTHINFO="/home/sas/.authinfo"
CASUSER=nicolashousset;
option casport=5570 cashost="serveur_cas_controler";
cas casauto sessopts=(caslib=casuser) ;
Logs
NOTE: Reading authinfo file: /home/sas/.authinfo
NOTE: Matching host: viyacasctrl.housset.com
NOTE: Matching port: 5570
NOTE: Matching user: nicolashousset
NOTE: Using authinfo host definition: default user nicolashousset password ******
NOTE: Client is using userid=nicolashousset, password=***
NOTE: Client is using the userpass identity provider
NOTE: Sent challenge length 108
NOTE: The session CASAUTO connected successfully to Cloud Analytic Services viyacasctrl.housset.com using port 5570. The UUID is 284e3617-fce8-5140-a9af-fcee0e90941b. The user is nicolashousset and the active caslib is CASUSERHDFS(nicolashousset).
Traces CAS (en mode DEBUG)
INFO [00000003] cas local MAIN NoUser [tkcalsock.c:846] - New client connection accepted on port 5570. Client IP address and port are [::ffff:10.104.88.62]:57404. Connection number 106667. TLS is required.
DEBUG [00213525] cas local MAIN NoUser [tkcalsident.c:304] - Allowing oauth only launches
TRACE [00213525] cas local MAIN NoUser [tkcalsident.c:382] - Entering server authentication
TRACE [00213525] cas local MAIN NoUser [tkcalsident.c:423] - Client did not supply a user agent string.
INFO [00213525] cas local MAIN NoUser [tkcalsident.c:426] - Client version long is '9.04.01M5P07112018'.
DEBUG [00213525] cas local MAIN NoUser [tkcalsident.c:451] - Locale set to 'en_US'
DEBUG [00213525] cas local MAIN NoUser [tkcalsident.c:459] - Received request length 108
DEBUG [00213525] cas local MAIN NoUser [tkcalsident.c:471] - The client provided credentials of type: userpass.
DEBUG [00213525] cas local MAIN NoUser [tkcalsident.c:507] - Received userid=nicolashousset, password=***
DEBUG [00213525] cas local MAIN NoUser [tkcalsident.c:513] - Obtaining oauth token with user/pass
DEBUG [00213525] cas local MAIN NoUser [tkidentmid.c:655] - User 'viyademo01' converted to OAUTH token.
DEBUG [00213525] cas local MAIN NoUser [tkidentoauth.c:148] - oauthAuthenticate(): Validating token.
DEBUG [00213525] cas local MAIN NoUser [tkidentoauth.c:286] - User request: nicolashousset
DEBUG [00213525] cas local MAIN NoUser [tkidentoauth.c:852] - oauthAuthenticate(): Token validated.
DEBUG [00213525] cas local MAIN NoUser [tkidentoauth.c:863] - userpass oauth token validated
INFO [00213525] viyademo01 local MAIN NoUser [tkident.c:1205] - User nicolashousset successfully authenticated using the OAuth authentication provider.
Quelques erreurs
Specified authinfo file does not exist: /home/sas/.authinfo
ERROR: Could not find matching host, port, and user combination in netrc/authinfo file.
Vérifier la présence du fichier d'authentification
NOTE: File has incorrect permissions: /home/sas/.authinfo
Vérifier les droits du fichier d'authentification. Le fichier doit disposer des autorisations de lecture et d'écriture uniquement pour le propriétaire. Utilisez chmod pour changer les permissions.
NOTE: Got disposition, severity 2, reason 4, message SAS Logon Manager authentication failed: Access denied.
ERROR: Connection failed. Server returned: SAS Logon Manager authentication failed: Access denied.
Vérifier que le service VIYA sas-logon est bien UP & Runing.
En activant le mode DEBUG au niveau de CAS, vous pourriez également obtenir les traces suivantes :
DEBUG [00213713] cas local MAIN NoUser [tkcalsident.c:513] - Obtaining oauth token with user/pass
ERROR [00213713] cas local MAIN NoUser [tkmtrbMethods.c:2016] - SubmitRequestWithFiles: uri='https://viyacasctrl.housset.com:443/SASLogon/oauth/token', correlator='X-SAS-Correlator: 8779D064-6FAC-8241-B9C5-EAF30F90056D;'.
ERROR [00213713] cas local MAIN NoUser [tkmtrbMethods.c:2019] - SubmitRequestWithFiles: status=8dbff828 httpStatus=404 'Not Found'.
ERROR [00213713] cas local MAIN NoUser [tkmtrbMethods.c:2043] - HTTP error returned from service.
ERROR [00213713] cas local MAIN NoUser [tkidentmid.c:674] - Access denied.
Utilisation des informations d'authentification stockées dans les métadonnées de SAS 9.
Si la connexion à CAS se fait depuis SAS Enterprise, il est possible de créer un domaine d'authentification pour stocker les informations de connexions à CAS.

Pour la connexion à CAS, dans un programme Enteprise Guide, la syntaxe est alors la suivante :
option set=CASCLIENTDEBUG=1 ;
option casport=5570 cashost=viyacasctrl.housset.com;
cas casauto sessopts=(caslib=casuser) AUTHDOMAIN=casauth;
L'ajout de l'option
AUTHDOMAIN=casauth indique à SAS de lire les informations d'authentification stockées dans les metadonnées (dans le le domaine casauth).
Les logs de connexion montrent que la récupération se fait correctement :
NOTE: Credential obtained from SAS metadata server.
NOTE: The session is using 2 workers.
Pour aller plus loin
Passer CAS en mode debug
Charger des données dans CAS
Sources
SAS 9.4M5 Integration with SAS Viya