CORS – Connectivité SAC en mode « LIVE »

Rappel : SAP Analytics Cloud est un outil de reporting de la suite SAP. Cet outil est hébergé sur le cloud en mode « SaaS » (Software As A Service), il est compatible avec un grand nombre de sources de données.

Pour accéder à vos données depuis le cloud, SAC dispose de deux méthodes :

  • Les connexions de type « Import de Données » ou « Data Acquisition » permettant de télécharger vos données dans le cloud afin d’y accéder de n’importe où.
  • Les connexions de type « Données Actives » ou « Live Connexion » permettant d’accéder à vos données en direct sans les importer dans le Cloud.

Pour le type « Live », SAC nécessite la mise en place complexe d’un reverse proxy, présenté dans un précédent article.

SAP propose désormais une solution alternative au reverse proxy, plus simple à mettre en place : la méthode CORS (Cross Origin Resource Sharing).

CORS et Reverse Proxy

CORS

CORS désigne un standard qui permet de contrôler les requêtes HTTP « cross-domain ». Cela permet notamment à une page web d’intégrer des images, feuilles de style ou scripts provenant d’un autre domaine que le sien.

Cors CLOUD

Ce standard est basé sur un système d’entêtes HTTP personnalisés définis par une spécification précise, ci-dessous la liste des paramètres à définir :

Entêtes de requête :

  • Origin: Indique la provenance de la requête cross-origin
  • Access-Control-Request-Method: Indique les méthodes qui seront utilisées (GET, POST, HEAD,PUT ,DELETE, TRACE, CONNECT)
  • Access-Control-Request-Headers: Indique quel entête sera utilisé

Entêtes de réponse :

  • Access-Control-Allow-Origin : Indique si la ressource peut être partagée (autorisée) pour la valeur de la requête « origin »
  • Access-Control-Allow-Credentials : Indique si la propagation de cookies, de vecteurs d’accréditation ou de certificats SSL est autorisée
  • Access-Control-Expose-Headers : Indique quels headers sont sécurisés et peuvent être exposés à l’API CORS
  • Access-Control-Max-Age : Indique la durée de vie en cache de la réponse
  • Access-Control-Allow-Methods : Indique les méthodes qui peuvent être utilisées
  • Access-Control-Allow-Headers : Indique le nom de l’entête qui peut être utilisé

Comme la méthode Reverse Proxy, cette solution s’applique seulement aux connexions de type « Live » entre SAP Analytics Cloud et vos sources de données (pas d’import de données dans le Cloud).

Ci –dessous, les outils qui peuvent être connectés à SAC avec cette nouvelle méthode CORS :

  • SAP HANA
  • SAP BW/4HANA & BW Classique
  • SAP BO Univers

Procédure de connexion entre SAC et HANA

De la même façon que pour une connexion Live via le reverse proxy, les services InA (Information Access) de HANA doivent être déployés et vous devez disposer d’un utilisateur avec le rôle sap.bc.ina.service.v2.userRole ::INA_USER.

Depuis la perspective « développement » de HANA Studio ou depuis le web IDE, ouvrez le fichier .xsaccess du package sap.bc.ina.service.v2 :

Connexion SAC HANA

Ajoutez le code présent dans l’encadré ci-dessus. Il s’agit des spécifications propres au standard CORS que je vous ai présenté en début d’article. Modifiez la ligne « allowOrigin » pour y intégrer l’adresse de votre tenant SAC. Enregistrez et déployez votre fichier puis rendez-vous sur SAC pour configurer votre connexion :

Connexion SAP Analytics Cloud

Choisissez le type de connexion « Direct » et saisissez l’hôte et le port de votre serveur. Les identifiants doivent correspondre à l’utilisateur disposant des droits INA ::USER.  Votre connexion est maintenant prête à être utilisée.

Procédure de connexion entre SAC et BW/BW4HANA

Dans le cas d’une connexion Live avec BW ou BW/4HANA, les mêmes pré-requis sont nécessaires. Les modifications à apporter visent également la mise en place des spécifications de CORS cependant celles-ci doivent être paramétrées via un fichier lié au profil d’instance du système BW ou directement depuis le SAP-GUI en fonction de la version NetWeaver utilisée.

A partir de Netweaver 7.4 :

Commencez par créer un fichier (« cors_rw » dans mon exemple) et ajoutez-y le code suivant :

Connexion SAP Analytics Cloud BW4HANA

La ligne 5 correspond à la spécification « allowOrigin », c’est ici que vous devez saisir votre tenant SAC. Référencez ensuite ce fichier dans votre profil d’instance (/usr/sap/<SID>/SYS/profile/VotreProfile) en ajoutant la ligne :

icm/HTTP/mod_0 = PREFIX=/, FILE={chemin/d’accès/à/cors_rw}

Redémarrez votre système, et rendez-vous sur SAC pour configurer la connexion :

Configuration directe BW4HANA

Choisissez le type « direct » et saisissez les informations de connexions adéquates. Afin d’éviter d’éventuels problèmes de connexion, modifier les paramètres de votre navigateur (chrome) pour qu’il accepte les cookies des tiers.

Si vous disposez d’un Netweaver v 7.52+, le paramétrage de CORS peut s’effectuer directement via le SAP GUI. Commencez par vérifier que le paramètre icf/cors_enabled est bien à 1 et configurez le Cross-Origin-Resource-Sharing en accédant à la transaction UCONCOKPIT.

Passez en mode « Edit » et ajoutez trois entrées aux services InA de BW :

Service Path : /sap/bw/ina/getserverinfo/
Host rule:https://tenant.eu1.sapbusinessobjects.cloud
Allowed Methods: Get, POST,OPTIONS
Allowed Headers: AUTHORIZATION,X-CSRF-TOKEN,X-SAP-CID
Exposed Headers: X-CSRF-TOKEN, SAP-REWRITEURL, SAP-URL-SESSION-ID
Allow Credentials: has to be active.
Max Age: 600

Service Path : /sap/bw/ina/getresponse/
Host rule: https://tenant.eu1.sapbusinessobjects.cloud
Allowed Methods: Get, POST, OPTIONS
Allowed Headers: AUTHORIZATION,CONTENT-TYPE,MYSAPSSO2,X-CSRF-TOKEN,X-SAP-CID
Exposed Headers: X-CSRF-TOKEN, SAP-REWRITEURL, SAP-URL-SESSION-ID
Allow Credentials: has to be active.
Max Age: 600

Service Path : /sap/bw/ina/logoff/
Host rule: https://tenant.eu1.sapbusinessobjects.cloud
Allowed Methods: GET,OPTIONS
Allowed Headers: AUTHORIZATION,X-SAP-CID
Exposed Headers: X-CSRF-TOKEN, SAP-REWRITEURL, SAP-URL-SESSION-ID
Allow Credentials: has to be active.
Max Age: 600

Sauvegardez vos entrées puis rendez-vous sur SAC et paramétrez votre connexion comme précédemment.

Procédure de connexion entre SAC et SAP BO Univers

Les connexions Live via la méthode CORS entre SAC et les univers SAP BO ne sont possibles que si vous disposez d’une plateforme BI 4.2 (SP4 minimum) et un serveur d’application (type tomcat) avec le SSL configuré.

Dans le répertoire tomcat/conf, ouvrez le fichier server.xml et rendez-vous au nœud Server>Service>Engine>Host. Ajouter une ligne <Context /> comme ci-dessous :

Connexion Tomcat SAC Univers BO

Sauvegardez le fichier.

Dans le même répertoire, créez un fichier boe.properties contenant les lignes suivantes :

Explication fichier boe properties

Arrêtez le serveur tomcat et intégrez le fichier nouvellement créé dans les paramètres de démarrage en ajoutant la ligne -DBocInaAgentConfigurationFile={chemin de boe.properties} :

Tomcat SAC Univers BO

Accédez ensuite à l’adresse https://launchpad.support.sap.com/#/softwarecenter et téléchargez le « live data connect » :

Configuration Live Data Connect

Déposez le fichier cs_ina_agent.war dans le répertoire webapps et démarrez tomcat. Rendez-vous ensuite dans le répertoire Tomcat 8.0\webapps\cs_ina_agent\WEB-INF et éditez le fichier web.xml comme ci-dessous :

Web XML

Redémarrez Tomcat. Sur votre tenant SAC, configurez la connexion comme ci-dessous :

Configuration de la connexion

Conclusion : notre avis

En comparaison avec la méthode « Reverse Proxy », cette nouvelle méthode « CORS » est plus simple à mettre en place. Il n’y a pas d’installation de software supplémentaire (Excepté un war à déployer pour les connexions de type « Live Univers »).

L’architecture à mettre en place est simplifiée. Nous préconisons cette architecture pour les futurs déploiements de SAC.

En termes de sécurité, grâce à cette méthode, toutes les communications sont cryptées de bout en bout (les données et les méta-données).



2 commentaires

  • somnambulie

    Bonjour,
    Merci pour ces explications très claires. Cependant je me pose une question : dans le cas d’une connexion à un univers BO, le numéro de port correspond-il bien au port https d’écoute du serveur tomcat (ou autre serveur applicatif) ?
    Par avance merci !

  • DeciVision

    Bonjour,

    Effectivement, dans le cas d’une connexion à un univers BO, le numéro de port correspond bien au port https d’écoute du serveur Tomcat.

    Dans votre cas, c’est le port 8443 qui doit être utilisé.

    Cordialement,
    L’équipe DeciVision

Laisser un commentaire

Etes-vous un humain ? *