PI Services

Le blog des collaborateurs de PI Services

Remplacer tous les mots de passe en claire dans un dossier donné en powershell

Bien souvent, en entreprise on se retrouve avec des dossiers contenant des fichiers *.ini d'installation ou autres avec des mots de passe stockés en claire. Prenons, le cas des installations SQL , le DBA enregistre les mots de passe dans un fichier de paramètre et ne pense pas à le supprimer. Les mots de passe en claire posent un problème de sécurité au SI. Le script en powershell ci-dessous permettrait de remplacer tous les mots de passes en claire par des étoiles (**********). 

#############################################
#Author: KARUPPANNAN Seevadassen            #
#Date: 27/03/2017                           #
#############################################

$networkPath = "\\chemin\dossier\"

$iniS = Get-ChildItem -Path $networkPath -Filter *.ini -Recurse

foreach ($file in $iniS) {

$fileName = $file.Name
$filePath = $file.FullName

Write-Host "File name: " $fileName -ForegroundColor yellow
Write-Host "Full path: " $filePath -ForegroundColor yellow

$array = $filePath.split("\")
$server = $array[8]

Write-Host "Server: " $server

$password = Get-Content $filePath | Where-Object { $_.Contains("SAPWD") -or $_.Contains("SQLSVCPASSWORD") -or $_.Contains("AGTSVCPASSWORD") -or $_.Contains("FTSVCPASSWORD") -or $_.Contains("ISSVCPASSWORD") -or $_.Contains("ASSVCPASSWORD") -or $_.Contains("RSSVCPASSWORD") -or $_.Contains("FARMPASSWORD")}

Write-Host $password
Write-Host $password.GetType()

foreach ($line in $password){

      $row = $server + ";" + $line
      Write-Host "row value: " $row -ForegroundColor Green

      Write-Host "line: " $line
      $param1,$param2 = $line.split('=') 
      Write-Host "partie1: " $param1


      $replacetxt =  $param1 + '=' + '"' + "********" + '"' 


      Write-Host "replace with " $replacetxt

try {

            (Get-Content $filePath) -replace $line,$replacetxt | Set-Content $filePath

            Write-Host "SUCCESS:Password has been replaced!" -ForegroundColor Green

      }catch{

            Write-Host "ERROR:Password has NOT been replaced!" -ForegroundColor red
            $ErrorMessage = $_.Exception.Message
            Write-Host $ErrorMessage
}

}

Write-Host "---"
}

 

Dans les fichiers *.ini, le script powershell va chercher toutes les lignes qui contiennent les mots clés "SAPWD","SQLSVCPASSWORD","AGTSVCPASSWORD","FTSVCPASSWORD"... et replacer par la suite les mots de passe par des étoiles.

 

Création d'un site SharePoint online via un template personalisé

1. Se rendre sur l'interface d'administration de SharePoint Online

Sélectionner : Nouveau > Collection de sites privée

2. Renseigner les champs suivants

  1. titre
  2. addresse du site web
  3. la langue
  4. le modèle (choisir personalisé)
  5. le fuseau horaire
  6. l'administrateur du site
  7. le quota

3. Patienter pendant la création du site

4. Application du template de site

Se rendre sur le site qui a été créé et cliquer sur "Galerie solutions" pour charger le template personalisé.

Sélectionner "Télécharger la solution"

Sélectionner le fichier template à injecter puis valider par OK

Activer le module et patienter pendant le chargement du template. 

FIN.

 

 

Authentification SSO avec l'ADFS et Apache 2.5 (installé sur un windows)

Sur mon blog précédent : https://blog.piservices.fr/post/2017/04/28/authentification-sso-avec-l-adfs-et-apache-2-5-installe-sur-un-linux , j'ai expliqué comment configurer un serveur apache installé sur un linux pour faire du SSO avec l'adfs en utilisant auth_mellon et lasso. Aujourd'hui nous allons voir la même chose mais sur un apache installé sur un Windows. 

Contexte

Apache ne communique pas nativement avec l'ADFS. Pour permettre à des applications web qui tournent sur apache de faire de l'authentification SSO, il faudrait installer SimpleSAMLphp qui contient tous les modules nécessaire pour faire du SAML.

Installation du simpleSAMLphp

1. Depuis le site télécharger la dernière version stable de SimpleSAMLphp. Décompression le fichier et déplacer les contenus dans le répertoire www du serveur apache.

2. Accèder au dossier www\simplesamlphp-1.14.11\www\index.php depuis votre navigateur et une page d'installation et de configuration de SimpleSAMLphp apparaîtra. 

Sélectionner >Configuration et vous verrez que par défaut le protocole SAML 2.0 - Idp est désactivé:

Pour l'activer aller dans le fichier \simplesamlphp-1.14.11\config\config.php et modifier le paramètre 'enable.saml20-idp' en true: 

/*
     * Enable
     *
     * Which functionality in SimpleSAMLphp do you want to enable. Normally you would enable only
     * one of the functionalities below, but in some cases you could run multiple functionalities.
     * In example when you are setting up a federation bridge.
     */
    'enable.saml20-idp' => true,
    'enable.shib13-idp' => false,
    'enable.adfs-idp' => false,
    'enable.wsfed-sp' => false,
    'enable.authmemcookie' => false,

Faire un refresh de la page:

Note: Dans notre cas l'idp est un ADFS donc pas besoin d'activer l'idp sur le serveur apache.

S'assurer que tous les prérequis nécessaires sont installés depuis la page configuration:

3. Créer le certificat SSL (auto-signé) pour le service provider (SP) avec openssl (assurez vous que openssl est installé)

openssl req -new -x509 -days 3652 -nodes -out saml.crt -keyout saml.pem

et entrer les fichiers *.crt et *.pem dans le fichier de configuration \simplesamlphp-1.14.11\config\authsources.php comme indiqué ci-dessous:

    // An authentication source which can authenticate against both SAML 2.0
    // and Shibboleth 1.3 IdPs.
    'default-sp' => array(
        'saml:SP',

        // The entity ID of this SP.
        // Can be NULL/unset, in which case an entity ID is generated based on the metadata URL.
        'entityID' => 'http://testapplication/',

        // The entity ID of the IdP this should SP should contact.
        // Can be NULL/unset, in which case the user will be shown a list of available IdPs.
        'idp' => 'https://fs.xxx-xxx.com/federationmetadata/2007-06/federationmetadata.xml',

        // The URL to the discovery service.
        // Can be NULL/unset, in which case a builtin discovery service will be used.
        'discoURL' => null,
		'privatekey' => 'saml.pem',
        'certificate' => 'saml.crt',
  • entityID = l'url de l'application web
  • idp = l'url ou le fichier metadata de l'identity provider (l'idp)
  • privatekey = le fcihier pem créé précédemment
  • certificate = le ficher crt créé précédemment

Génération du fichier service provider (SP) metadata.

Il faudra par la suite générer le fichier metadata du service provider (sp) et l'utiliser pour configuration la fédération ADFS.

Pour générer le fichier sp metadat aller dans sur la page Féderation et cliquer sur [Afficher les métadonnées] de SP SAML 2.0

Une page avec les métadonnées apparaîtra, sauvegarder les tous dans un fichier au format xml. Exemple d'un fichier de metadonnées généré par SimpleSAMLphp:

<?xml version="1.0"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="http://testapplication/">
  <md:SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol urn:oasis:names:tc:SAML:2.0:protocol">
    <md:KeyDescriptor use="signing">
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Data>
          <ds:X509Certificate>MIIEFTCCAv2gAwIBAgIJALEBPyeEV48BMA0GCSqGSIb3DQEBCwUAMIGgMQswCQYDVQQGEwJGUjEMMAoGA1UECAwDSURGMQ4wDAYDVQQHDAVQQVJJUzEUMBIGA1UECgwLQVBQTElDQVRJT04xGzAZBgNVBAsMEkFQUExJQ0FUSU9OIEdST1VQRTEVMBMGA1UEAwwMQVBQTElDQVRJT04xMSkwJwYJKoZIhvcNAQkBFhptZXZlbi5rYXJ1cHBhbm5hbkBsaXZlLmNvbTAeFw0xNzAyMDgxMTI3MjJaFw0yNzAyMDgxMTI3MjJaMIGgMQswCQYDVQQGEwJGUjEMMAoGA1UECAwDSURGMQ4wDAYDVQQHDAVQQVJJUzEUMBIGA1UECgwLQVBQTElDQVRJT04xGzAZBgNVBAsMEkFQUExJQ0FUSU9OIEdST1VQRTEVMBMGA1UEAwwMQVBQTElDQVRJT04xMSkwJwYJKoZIhvcNAQkBFhptZXZlbi5rYXJ1cHBhbm5hbkBsaXZlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALjKwVm4GtahFeBZXataYQzIWIAqcenA4RjmyGaGnI64uttEXDea8qpY+FYYCG9QIJWksz9CBrmM81bCi63DvQMa/ufGhTR6x99I5XHXdzya2F0DZCG6VuruPzLFuxi7u3p/ViHzmFkdEW9Gv23+s/SNyXnO7w4+YHiazobTadH9OmioPxd9m9Llwiml0I7FeVkfcnmscNOezD0P89eWVKkRnOjH8yccp2skke1nbHAv7Kh37dt3tq8uE/QPxC9gWimgyuJdo8F49RL6b2vE5laAxKYUSCjY6bcMg2MXrTiJMKmnqj0POauS8r9jy7V26+6sGtjNajOerem2X7ShskkCAwEAAaNQME4wHQYDVR0OBBYEFNB6YexsAR7Hy1YRDN54MxBdId5YMB8GA1UdIwQYMBaAFNB6YexsAR7Hy1YRDN54MxBdId5YMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAAG1hkGrJcNCrhmacqKi6sOV05238ix0ynGhtZyHVmIZf2OmJIXj117Xk9SHcCk4pFx26yfHOH4vnqK579UL1ACg1bp21R1POO4GNnhXRQiPwOdhtCOprYt9vq1zP7+aIiU4v6gSDUAcWf7a6nin4dwcYfO0cHAly7TW75tJGQa88eT9/v4s7YIopm+8D/+8skB8HqbkJ7i5E6+iILdHXgKqj1amxojPYjrH5ZFZmxS+tT5Z33+PU+FMwYw5YzmSAV84QfotZamcIc95A7FUNP2VEQjkX3nx6zuY+RE8aZr6Ul2ORPJVrnajrcUooP8f6Rd70Fg2Eaq/gmK1bP6UOm4=</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </md:KeyDescriptor>
    <md:KeyDescriptor use="encryption">
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Data>
          <ds:X509Certificate>MIIEFTCCAv2gAwIBAgIJALEBPyeEV48BMA0GCSqGSIb3DQEBCwUAMIGgMQswCQYDVQQGEwJGUjEMMAoGA1UECAwDSURGMQ4wDAYDVQQHDAVQQVJJUzEUMBIGA1UECgwLQVBQTElDQVRJT04xGzAZBgNVBAsMEkFQUExJQ0FUSU9OIEdST1VQRTEVMBMGA1UEAwwMQVBQTElDQVRJT04xMSkwJwYJKoZIhvcNAQkBFhptZXZlbi5rYXJ1cHBhbm5hbkBsaXZlLmNvbTAeFw0xNzAyMDgxMTI3MjJaFw0yNzAyMDgxMTI3MjJaMIGgMQswCQYDVQQGEwJGUjEMMAoGA1UECAwDSURGMQ4wDAYDVQQHDAVQQVJJUzEUMBIGA1UECgwLQVBQTElDQVRJT04xGzAZBgNVBAsMEkFQUExJQ0FUSU9OIEdST1VQRTEVMBMGA1UEAwwMQVBQTElDQVRJT04xMSkwJwYJKoZIhvcNAQkBFhptZXZlbi5rYXJ1cHBhbm5hbkBsaXZlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALjKwVm4GtahFeBZXataYQzIWIAqcenA4RjmyGaGnI64uttEXDea8qpY+FYYCG9QIJWksz9CBrmM81bCi63DvQMa/ufGhTR6x99I5XHXdzya2F0DZCG6VuruPzLFuxi7u3p/ViHzmFkdEW9Gv23+s/SNyXnO7w4+YHiazobTadH9OmioPxd9m9Llwiml0I7FeVkfcnmscNOezD0P89eWVKkRnOjH8yccp2skke1nbHAv7Kh37dt3tq8uE/QPxC9gWimgyuJdo8F49RL6b2vE5laAxKYUSCjY6bcMg2MXrTiJMKmnqj0POauS8r9jy7V26+6sGtjNajOerem2X7ShskkCAwEAAaNQME4wHQYDVR0OBBYEFNB6YexsAR7Hy1YRDN54MxBdId5YMB8GA1UdIwQYMBaAFNB6YexsAR7Hy1YRDN54MxBdId5YMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAAG1hkGrJcNCrhmacqKi6sOV05238ix0ynGhtZyHVmIZf2OmJIXj117Xk9SHcCk4pFx26yfHOH4vnqK579UL1ACg1bp21R1POO4GNnhXRQiPwOdhtCOprYt9vq1zP7+aIiU4v6gSDUAcWf7a6nin4dwcYfO0cHAly7TW75tJGQa88eT9/v4s7YIopm+8D/+8skB8HqbkJ7i5E6+iILdHXgKqj1amxojPYjrH5ZFZmxS+tT5Z33+PU+FMwYw5YzmSAV84QfotZamcIc95A7FUNP2VEQjkX3nx6zuY+RE8aZr6Ul2ORPJVrnajrcUooP8f6Rd70Fg2Eaq/gmK1bP6UOm4=</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </md:KeyDescriptor>
    <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="http://localhost/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp"/>
    <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="http://localhost/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp" index="0"/>
    <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:1.0:profiles:browser-post" Location="http://localhost/simplesaml/module.php/saml/sp/saml1-acs.php/default-sp" index="1"/>
    <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact" Location="http://localhost/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp" index="2"/>
    <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:1.0:profiles:artifact-01" Location="http://localhost/simplesaml/module.php/saml/sp/saml1-acs.php/default-sp/artifact" index="3"/>
  </md:SPSSODescriptor>
</md:EntityDescriptor>

Maintenant il ne reste plus qu'à configuration l'ADFS avec le fichier métadonnées du SP et faire un test. Pour effectuer un test et voir si l'authentification fontionne bien , aller sur la page [Authentifcation] et sélectionner [Tester les sources d'authentification configurées]

Pour accéder à cette page , connecter vous en tant qu'administrateur. Le mot de passe du compte administration est configuration depuis le fichier www\simplesamlphp-1.14.11\config\config.php avec le paramètre 'auth.adminpassword'

/**
     * This password must be kept secret, and modified from the default value 123.
     * This password will give access to the installation page of SimpleSAMLphp with
     * metadata listing and diagnostics pages.
     * You can also put a hash here; run "bin/pwgen.php" to generate one.
     */
    'auth.adminpassword' => '1234',
    'admin.protectindexpage' => false,
    'admin.protectmetadata' => false,

 

Authentification SSO avec l'ADFS et Apache 2.5 (installé sur un linux)

Dans cet article nous allons apprendre comment permettre apache 2.4 (installée sur un linux) à communiquer avec l'ADFS pour faire de l'authentification SSO (Single Sign On)

Contexte 

Apache ne communique pas nativement avec l'ADFS. Pour permettre à des applications web qui tournent sur apache de faire de l'authentification SSO, il faudrait installer deux modules , auth_mellon et lasso , pour permettre la communication.  

Installation des modules nécessaires 

1. auth_mellon

« auth_mellon » est un module Apache qui permet l'authentification d'utilisateurs d'un site web avec un fournisseur d'identité (Identiy Provider — IdP) implémentant SAML 2.0. Il peut accorder des droits d'accès à des chemins et fournir des attributs à d'autres modules ou applications.

Téléchargement du module « auth_mellon » : https://packages.debian.org/fr/sid/libapache2-mod-auth-mellon (nom du paquet: libapache2-mod-auth-mellon) pour debian

Télécharger depuis https://packages.debian.org/fr/sid/libapache2-mod-auth-mellon le fichier *.deb pour l’installation du module « auth_mellon ».

Utiliser la commande suivante pour installer auth_mellon.

dpkg –i libapache2-mod-auth-mellon_0.9.1-1-bpo70+1_amd64.deb

Note: Installer toutes les dépendence liées à « auth_mellon » avant de continuer.

2. lasso

« lasso » est une bibliothèque de modules écrits en C avec des protocoles de communication pour des entités fédérées , SSO et autres produits identiques. Pour que lasso puisse fonctionner,il faudrait en plus de liblasso3, libxml2, XMLSec et OpenSSL. 

Lasso est disponible sur le site http://lasso.entrouvert.org/ en téléchargement en ajoutant la repository dans le fichier sources.list par exemple pour une debian.

deb http://deb.entrouvert.org wheezy main

Note: Installer toutes les dépendence liées à « lasso » avant de continuer.

Génération du fichier métadata *.xml, *.crt, *.key 

Pour la création d'une fédération (federation trust), l'ADFS nécessite le fichier de configuration du Service Provider (SP) qui est le serveur apache et ses applications. Ces fichiers sont créés par le script fournit ci-dessous: 

Le nom du script est mellon_create_metadata.sh et placer dans le dossier /etc/apache2/mellon

#!/usr/bin/env bash
set -e

PROG="$(basename "$0")"

printUsage() {
    echo "Usage: $PROG ENTITY-ID ENDPOINT-URL"
    echo ""
    echo "Example:"
    echo "  $PROG urn:someservice https://sp.mon-application.com/mellon"
    echo ""
}

if [ "$#" -lt 2 ]; then
    printUsage
    exit 1
fi

ENTITYID="$1"
if [ -z "$ENTITYID" ]; then
    echo "$PROG: An entity ID is required." >&2
    exit 1
fi

BASEURL="$2"
if [ -z "$BASEURL" ]; then
    echo "$PROG: The URL to the MellonEndpointPath is required." >&2
    exit 1
fi

if ! echo "$BASEURL" | grep -q '^https\?://'; then
    echo "$PROG: The URL must start with \"http://\" or \"https://\"." >&2
    exit 1
fi

HOST="$(echo "$BASEURL" | sed 's#^[a-z]*://\([^/]*\).*#\1#')"
BASEURL="$(echo "$BASEURL" | sed 's#/$##')"

OUTFILE="$(echo "$ENTITYID" | sed 's/[^0-9A-Za-z.]/_/g' | sed 's/__*/_/g')"
echo "Output files:"
echo "Private key:               $OUTFILE.key"
echo "Certificate:               $OUTFILE.cert"
echo "Metadata:                  $OUTFILE.xml"
echo "Host:                      $HOST"
echo
echo "Endpoints:"
echo "SingleLogoutService:       $BASEURL/logout"
echo "AssertionConsumerService:  $BASEURL/postResponse"
echo

# No files should not be readable by the rest of the world.
umask 0077

TEMPLATEFILE="$(mktemp -t mellon_create_sp.XXXXXXXXXX)"

cat >"$TEMPLATEFILE" <<EOF
RANDFILE           = /dev/urandom
[req]
default_bits       = 2048
default_keyfile    = privkey.pem
distinguished_name = req_distinguished_name
prompt             = no
policy             = policy_anything
[req_distinguished_name]
commonName         = "mon-application.com"
EOF

openssl req -utf8 -batch -config "$TEMPLATEFILE" -new -x509 -days 3652 -nodes -out "$OUTFILE.cert" -keyout "$OUTFILE.key" 2>/dev/null

rm -f "$TEMPLATEFILE"

CERT="$(grep -v '^-----' "$OUTFILE.cert")"

cat >"$OUTFILE.xml" <<EOF
<EntityDescriptor entityID="$ENTITYID" xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
  <SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
    <KeyDescriptor use="signing">
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Data>
          <ds:X509Certificate>$CERT</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </KeyDescriptor>
    <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="$BASEURL/logout"/>
    <AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="$BASEURL/postResponse" index="0"/>
  </SPSSODescriptor>
</EntityDescriptor>
EOF

umask 0777
chmod go+r "$OUTFILE.xml"
chmod go+r "$OUTFILE.cert"

Note : Changer le CommonName par le FQDN complet, exemple : mon-application.com.

le script se lance comme indique dans la commande ci-dessous: 

sh mellon_create.metadata.sh https://mon-application.com/url_application https://mon-application.com/mellon

L'exécution du script va générer 3 fichiers à envoyer à l'IDP pour la création d'une fédération:

  1. https_mon-application.com_url_application.cert
  2. https_mon-application.com_url_application.key
  3. https_mon-application.com_url_application.xml

Configuration du fichier auth_mellon.conf

Configurer le fichier auth_mellon.conf (etc/apache2/mod-available/auth_mellon.conf) comme dans l’exemple ci-dessous.

# MellonCacheSize sets the maximum number of sessions which can be active
# at once. When mod_auth_mellon reaches this limit, it will begin removing
# the least recently used sessions.
# Default: MellonCacheSize 100
#MellonCacheSize 100

# MellonPostDirectory is the full path of a directory where POST requests
# are saved during authentication. This directory must writeable by the
# Apache user. It should not be writeable (or readable) by other users.
MellonPostDirectory "/var/cache/apache2/mod_auth_mellon/"

<Location />
    # Add information from the mod_auth_mellon session to the request.
    MellonEnable "info"

    # Configure the SP metadata
    # This should be the files which were created when creating SP metadata.
    MellonSPPrivateKeyFile /etc/apache2/mellon/https_mon-application.com_url_application.key
    MellonSPCertFile /etc/apache2/mellon/https_mon-application.com_url_application.cert
    MellonSPMetadataFile /etc/apache2/mellon/https_mon-application.com_url_application.xml

    # IdP metadata. This should be the metadata file you got from the IdP.
    MellonIdPMetadataFile /etc/apache2/mellon/FederationMetadata.xml

    # The location all endpoints should be located under.
    # It is the URL to this location that is used as the second parameter to the metadata generation script.
    # This path is relative to the root of the web server.
    MellonEndpointPath /mellon
</Location>

# This is a location that will trigger authentication when requested.
<Location /sspi/sspi_test.php>
    # This location will trigger an authentication request to the IdP.
    MellonEnable "auth"
MellonSecureCookie On
</Location>
<Location /index.php>
    # This location will trigger an authentication request to the IdP.
    MellonEnable "auth"
MellonSecureCookie On
</Location>
<Location /index_prod.html>
    # This location will trigger an authentication request to the IdP.
    MellonEnable "auth"
MellonSecureCookie On
</Location>
<Location /autoconnect_mail.php>
    # This location will trigger an authentication request to the IdP.
    MellonEnable "auth"
MellonSecureCookie On
</Location>

MellonIdPMetadataFile = le fichier de fédération de l'IDP.

Il ne reste plus qu'à paramétrer l'application pour la connection et redirection automatique.

 

 

 

Utilisation de WinSCP .Net Assembly et COM library

Dans cet article nous allons apprendre l'utilisation et l'importance de WinSCP .Net Assembly et COM library.

Introduction

Nous sommes habitué à utiliser le client WinSCP pour se connecter sur un serveur SFTP,SCP ou FTP. Il existe même un module très basique appelé WinSCP.com pour envoyer ou réceptionner des données via un fichier *.bat. Cependant, beaucoup d'entre nous ignore l'existance de WinSCP .Net Assembly et COM library qui offre la possibilité de manipuler des fichiers à distance depuis un environnement supportant .NET, par exemple C#,VB. Net, PowerShell,SSIS et même depuis les sites MS AZURE.

WinSCP .Net assembly et COM library offrent beaucoup de possibilité en termes de ligne de commandes pour automatiser l'envoi et la réception de fichier depuis un serveur FTP,SCP ou sFTP. 

Prérequis

Télécharger le fichier zip indiqué ci-dessous et décompresser le.

Exemple de programmation en PoSH

  • L'initialisation d'une connexion sur un serveur
try
{
    # appel WinSCP .NET assembly
    Add-Type -Path "WinSCPnet.dll"
 
    # paramètre de connexion
    $sessionOptions = New-Object WinSCP.SessionOptions -Property @{
        Protocol = [WinSCP.Protocol]::Sftp
        HostName = "example.com"
        UserName = "user"
        Password = "mypassword"
        SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
    }
 
    $session = New-Object WinSCP.Session
 
    try
    {
        # initialiser la connexion
        $session.Open($sessionOptions)
 
        Write-Host "You are now connected!!!"
    }
    finally
    {
        # Déconnecter et nettoyer
        $session.Dispose()
    }
 
    exit 0
}
catch [Exception]
{
    # Exception
    Write-Host ("Error: {0}" -f $_.Exception.Message)
    exit 1
}

Pour se connecter sur un serveur sFTP avec une clé privée et sans login et mot de passe, remplacer la ligne :

Password = "mypassword"
        SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"

par 

SshPrivateKeyPath = "chemin vers la clé privée"
        GiveUpSecurityAndAcceptAnySshHostKey = "true"
  • Télécharger un fichier 

Pour télécharger un fichier avec son nom, utiliser la ligne de commande ci-dessous:

$session.GetFiles($session.EscapeFileMask(<chemin complet du fichier>), <destination locale>).Check()
  • Pour uploader un fichier 
 # Upload files
        $transferOptions = New-Object WinSCP.TransferOptions
        $transferOptions.TransferMode = [WinSCP.TransferMode]::Binary
 
        $transferResult = $session.PutFiles("d:\toupload\*", "/home/user/", $False, $transferOptions)

 

Pour avoir plus d'informations sur les classes existantes : https://winscp.net/eng/docs/library

 

Recupération du code retour lors d'une exécution d'un script PoSh sous Orchestrator

INTRODUCTION

Orchestrator (SCO) est une solution d'automatisation de processus (Run Book Automation – RBA) pour l'orchestration. Un runbook contient plusieurs activités connectées sous forme d'un workflow. Pour bien définir le chemin d'un workflow, il faudra savoir récupérer le code retour d'une activité. Par défaut, le code retour d'une activité (Initialize Data) est définit comme dans l'exemple ci-dessous:

Pour afficher l'écran ci-dessus, double-cliquer sur le lien entre deux activités. On cochant la bonne case, nous pourrons définir le chemin du workflow en cas de "success","warning" ou "failed". Mais, cela devient plus compliqué si nous souhaitons récupérer un code retour d'une application ou d'un script PoSh. Dans l'exemple ci-dessous, nous allons récupérer le code retour d'un script PoSh lancé par Orchestrator. 

Exemple

Nous allons créer un runbook qui lancera un script PoSH avec deux codes retour possible  : 100 et 101. Les deux codes retour doivent emprunter deux chemins diférents. Le runbook resemble à:

L'activité "Run Program" lancera le script. L'activité "Return code" en PoSh récupérera le code retour et le mettra dans une variable qu'on traitera par la suite. Attention: dans l'exemple le script PoSh est lancé par un fichier .bat.

Le script powershell contient les codes suivants: 

$server = "127.0.0.1"
$ping = new-object System.Net.NetworkInformation.Ping
$ReponsePing = $ping.Send($server)


if ($ReponsePing.status –eq “Success”) 
{
     return 100
}
else 
{
     return 101
}

 

Le script .bat contient les codes suivants:

powershell .\ping.ps1

Paramétrage des activités

Dans l'activité "Run Program":

Sélectionner "Command execution" puis entrer le nom du serveur, le chemin du fichier .bat et le répertoire de travail. 

Après l'exécution de l'activité, le code retour (100 ou 101) sera publié dans une variable publiée automatiquement. Le nom de la variable est Pure Output et on constate bien à la fin le code retour 100. 

Nous allons récupérer ce code retour sans une autre variable qu'on nommera $pureOutput grâce à un script PoSh définit dans l'activité "Return code".

Assurez vous que la variable est bien publiée dans "Published Data". Grâce à cette variable nous pourrons définir correctement le chemin à prendre si le code retour est 100 ou 101. Pour le faire, double-cliquer sur le connecteur (link) et ajouter la variable "pureOutput" et son contenu.

Faire la même chose sur le connecteur (link) pour le code retour 101.

 

 

 

 

 

 

 

 

Installation et configuration d'un relais SMTP sous IIS

Introduction 

Les applications qui sont accessibles sur internet sont bien souvent installées dans un environnement de DMZ pour des raisons de sécurité. Des fois, ces applications nécessitent un envoi de mail sans pour autant passer directement par le serveur SMTP mais en faisant un rebond sur un relais SMTP (encore une fois pour des raisons de sécurité). Nous allons installer et configurer ce relais SMTP sous IIS.

Prérequis

  • 2 serveurs Windows (2, pour du load-balancing)
  • 1 VIP F5 avec les deux serveurs configurés dans le pool (Le F5 gère automatiquement le load-balancing)
  • l'ip du serveur SMTP

Installation IIS ( A faire sur les deux serveurs)

Sélectionner « Web Server (IIS) » et cliquer sur « Next ».

Laisser les fontionalités par défaut et faire un "Next" pour démarrer l'installation de IIS.

Configuration du relais SMTP (A faire sur les deux serveurs)

1. Lancer « Internet Information Services 6.0 Manager » et faire un clic droit sur « SMTP Virtual Server #1» puis sélectionner « Properties ».

2. Dans l’onglet « Access », cliquer sur « Authentification » et sélectionner « Anonymous »

3. Dans l’onglet « Delivery » , cliquer sur « Outbound Security».

4. Cliquer sur « Advanced » et entrer le Fully-Qualified domain name (Nom du serveur IIS) et dans Smart host, entrer l’addresse du serveur SMTP.

La configuration du relais SMTP est terminé.

Autoriser une application à envoyer des e-mails sur le relais SMTP (A faire sur les deux serveurs)

Pour autoriser une application à envoyer des e-mail en anonyme, il faudra autoriser l'ip de serveur applicatif sur le relais SMTP IIS.

1. Aller dans l’onglet « Access » et cliquer sur « Relay ». Cliquer sur Add pour entrer l’IP du serveur qui doit envoyer de e-mail. 

Migrer SharePoint 2010 vers SharePoint 2013

Il existe un type de migration possible connu sous le nom de « database-attach upgrade ». L'upgrade de SPS 2010 à 2013 n'étant pas supporté, il faut nécessairement créer une batterie de serveur SharePoint 2013. Nous supposons que la ferme SPS, du type 3 tiers est déjà créée.

La migration se déroule en trois grandes étapes :

  • La préparation
  • La mise à niveau des bases de données
  • La mise à niveau des sites

Préparation

La première étape consiste à identifier les éléments que vous allez migrer. Par la même occasion, collectez l'ensemble des éléments relatifs à votre infrastructure SharePoint 2010 (configuration des webapp, Mappages des accès de substitution, Fournisseurs et modes d’authentification utilisés, Modèles de quota, Chemins d’accès gérés.... Nombres de sites, de BDD de contenu, d'utilisateurs...).

Il est recommandé de rechercher et réparer les erreurs de cohérence de données de données. Un lien technet explique comment nettoyer l’environnement SP 2010 avant une migration :

https://technet.microsoft.com/en-us/library/ff382641(v=office.15)

Une fois la configuration initiale terminée, créez les applications web pour chaque application web que vous aviez sur votre SPS 2010 sur la nouvelle plateforme SPS 2013.

La mise à niveau des bases de données

  1. Passez en lecture seule les bases de données de SPS 2010 puis sauvegardez là. Pour le faire, dans « Options» de la base de données, sélectionnez « True » pour l’option « Database Read-Only ».

  1. Restaurez les bases de données sur la nouvelle instance SQL de la ferme SPS 2013.
  2. Quand une base de données est copiée, tous les anciens comptes de sécurité associés à la base de données sont conservés. Il faudra donc supprimer ces anciens comptes. Lors de son association avec SharePoint, les droits nécessaires lui seront automatiquement ajoutés (en l’occurrence les comptes Pool et Farm).

Mise à jour des bases de données

Avant d’associer les bases de données à leur WebApp respectives, il est nécessaire de s’assurer qu’elles ne présentent pas d’erreurs. Pour cela :

Test-SPContentDatabase -name "test1" -webapplication http://sitename -ServerInstance "SQL2"

Il se peut alors que les erreurs suivantes apparaissent :

  1. Missing Feature
  2. Missing Web Part
  3. Missing Setup File
  4. Missing Assembly

Ignorer l’erreur de configuration d’authentification suivante "Configuration: The [WebApp] web application is configured with claims authentication mode however […]."

Association des bases de données

Une fois les bases de données disponibles dans la nouvelle batterie, vous pouvez les lier et les mettre à niveau. Bien que cette opération mette à niveau les données, elle ne met pas à niveau l’interface utilisateur des sites contenus dans les bases de données. Mettez à niveau les bases de données à l’aide de la cmdlet Mount-SPContentDatabase.

Mount-SPContentDatabase "MyDatabase" -DatabaseServer "MyServer" -WebApplication http://sitename

Passage en authentification « claims »

Sous SharePoint 2013, l’authentification basique (NTLM) est « dégradée » et il convient d’utiliser l’authentification « claims ». Pour cela :

Convert-SPWebApplication -Identity "https://<webappurl>" -To Claims -RetainPermissions [-Force]

Notez que cela active les modes d’authentifications « Anonymous » et « Forms » dans IIS. De base, seules les authentifications Windows et ASP.NET sont activées.

Version des bases de données

Il est également recommandé de changer le mode de compatibilité des bases de données « Content ». Effectuez cette opération depuis Management Studio: Clic droit sur la base de données « Content » > Properties > Options

MISE À NIVEAU DES SITES

Une fois les bases de données mises à niveau, les administrateurs de collections de sites peuvent mettre à niveau leurs sites. Les étapes suivantes sont effectuées à partir de la page Paramètres du site de la collection de sites.

EXÉCUTION DES VÉRIFICATIONS D’INTÉGRITÉ DE COLLECTION DE SITES

Avant de mettre à niveau, les administrateurs de collections de sites peuvent utiliser l’outil de vérification d’intégrité pour identifier et traiter les problèmes éventuels qui surviennent dans leurs collections de sites. Les vérifications d’intégrité sont également exécutées automatiquement avant la mise à niveau.

MISE À NIVEAU D’UNE COLLECTION DE SITES

Après avoir vérifié que le site est prêt, les administrateurs de collections de sites peuvent mettre à niveau leur collection de sites vers la nouvelle interface utilisateur.

La migration est terminée.