Microsoft IIS/SharePoint Authentication API Proxy

Proxy Client Service mit Trusted Peer Access für OAuth2

Copyright ©

Mindbreeze GmbH, A-4020 Linz, .

Alle Rechte vorbehalten. Alle verwendeten Hard- und Softwarenamen sind Handelsnamen und/oder Marken der jeweiligen Hersteller.

Diese Unterlagen sind streng vertraulich. Durch die Übermittlung und Präsentation dieser Unterlagen alleine werden keine Rechte an unserer Software, an unseren Dienstleistungen und Dienstleistungsresultaten oder sonstigen geschützten Rechten begründet. Die Weitergabe, Veröffentlichung oder Vervielfältigung ist nicht gestattet.

Aus Gründen der einfacheren Lesbarkeit wird auf die geschlechtsspezifische Differenzierung, z.B. Benutzer/-innen, verzichtet. Entsprechende Begriffe gelten im Sinne der Gleichbehandlung grundsätzlich für beide Geschlechter.


VorbereitungPermanenter Link zu dieser Überschrift

Folgende Schritte am Keycloak Server und Mindbreeze Client Service sind notwendig bevor man IIS Authentication Proxy konfiguriert.

Keycloak Server KonfigurationPermanenter Link zu dieser Überschrift

OAuth Endpoint: https://keykloakserver/auth/realms/master/protocol/openid-connect/token

Client-ID: iis-client


Client-Secret:

Username: iis-client-user

User Role: InSpire Application Impersonation

Client Service KonfigurationPermanenter Link zu dieser Überschrift

Konfiguration von Mindbreeze Client Service “Trusted Peer Access Using OAuth 2.0 Bearer Token” mit den oberen Parameter.


Microsoft IIS KonfigurationPermanenter Link zu dieser Überschrift

Folgende Schritte sind notwendig:

1)  Hinzufügen von OAuthProxy Handler zum configuration/system.webServer/handlers Node in der web.config Datei.

<configuration>

    <system.webServer>

        <handlers>

            <add name="OAuthProxy"

path="/_api_mindbreezeinspire"

verb="*"

type="Mindbreeze.ResourceProxy.OAuthProxy"

resourceType="Unspecified"

preCondition="integratedMode" />

        </handlers>

    </system.webServer>

</configuration>

2) Hinzufügen von der ProxyConfig Deklaration im configuration/configSections Node unter Mindbreeze sectionGroup.

<configuration>

   <configSections>

        <sectionGroup name="Mindbreeze">

<section name="ProxyConfig"

type="Mindbreeze.ResourceProxy.ProxyConfig"

allowLocation="true"

allowDefinition="Everywhere" />

</sectionGroup>

   </configSections>

<configuration>

3) Hinzufügen von Mindbreeze/ProxyConfig Sektion zum configuration Node.

<configuration>

  <Mindbreeze>

     <ProxyConfig logFile="c:\temp\resource_proxy.log" logLevel="Error">

<ServerUrl url="<clienservice url>"

oauth2Endpoint="https://keykloakserver/auth/realms/master/protocol/openid-connect/token

username="iis-client-user"

password="<password>"

clientId="iis-client"

clientSecret="<clientsecret>"

disableSSLValidation="false"/>

     </ProxyConfig>

   </Mindbreeze>

</configuration>

4) Kopieren von Mindbreeze.ResourceProxy.dll zusammen mit der OAuth2 DLLs im bin Verzeichnis von der Webapplikation und Restarten von Webapplikation im IIS Manager.

Alle HTTP Abfragen die <IIS web application URL>/_api_mindbreezeinspire/path/and/?query entsprechen werden nun an <Client Service URL>/path/and/?query weitergeleitet. Die abgeleitete Abfragen beinhalten die von der IIS authentisierte Benutzername und OAuth2 Token.


Verschlüsselung der Microsoft IIS KonfigurationPermanenter Link zu dieser Überschrift

Zuerst sollte es sichergestellt werden, dass die „IIS anonymous machine“ Benutzer (IUSR and IIS_IUSRS) Schreiberechte auf C:\ProgramData\Microsoft\Crypto\RSA\Crypto\RSA Verzeichnis haben bevor das aspnet_regiis.exe ausgeführt wird. Zweitens sollte im (c:\tempDir) Verzeichnis eine web.config Datei liegen, die nur the ProxyConfig Node hat existieren.  ProxyConfig Node soll nicht im Mindbreeze Node liegen sondern direkt unter configuration Node liegen. Z.B.

<configuration>

     <ProxyConfig logFile="c:\temp\resource_proxy.log" logLevel="Error">

<ServerUrl url="<clienservice url>"

oauth2Endpoint="https://keykloakserver/auth/realms/master/protocol/openid-connect/token

username="iis-client-user"

password="<password>"

clientId="iis-client"

clientSecret="<clientsecret>"

disableSSLValidation="false"/>

     </ProxyConfig>

</configuration>

Nun kann das aspnet_regiis.exe wie folgt ausgeführt werden:

C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis.exe –pef "ProxyConfig" "C:\tempDir"

Microsoft (R) ASP.NET RegIIS version 4.0.30319.0

Administration utility to install and uninstall ASP.NET on the local machine.

Copyright (C) Microsoft Corporation.  All rights reserved.

Encrypting configuration section...

Succeeded!

Jetzt kann der verschlüsselte ProxyConfig Node in der web.config Datei der Webapplikation kopiert werden.

<configuration>

  <Mindbreeze>

  <ProxyConfig configProtectionProvider="RsaProtectedConfigurationProvider">

      <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"

         xmlns="http://www.w3.org/2001/04/xmlenc#">

         <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />

         <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">

            <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">

               <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />

               <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">

                  <KeyName>Rsa Key</KeyName>

               </KeyInfo>

               <CipherData>

                  <CipherValue>Fn6+756cE682pfJD0Eei4jSyOdoiIb1U6XYYbVYCjfw38EZwFGSDFDlbNUe0KVFUgZcGTYw/1aRZRnsR/vrJb9q0c3IRlDYWC9HRolnmBDXna5uZwBkdnD+FYQzc8xMZ9PKoaNjoU645iQNbmdS/6d/QWquQ4ijktdhJJmy0S/kOzyNFvP++DZLnRxl1ML0O7u/RZDVUQacCi623xJQhmbhdrCNnsnvOyjEGOjUS0kWlOpUXAfwJtO9GMJhAWPz9JuIxJxLC/tEtssy+Hf69DVUlyUhwKa/8cKLgwDEM3z0Udt1FaQT7n7htdzVaQbdb3nqrEyvs7ShogfSzWtAezA==</CipherValue>

               </CipherData>

            </EncryptedKey>

         </KeyInfo>

         <CipherData>

            <CipherValue>F0kCfWr3EwY6mO/rLUdrwzgVJcZnRLUCW7zJG9veQ/jXJm3pwLyDO1ytH6bIroF0Hk3AOezyZJphtZe6843GmXrLw4sY6ueTie0Ibx2oKcvOhXY/D+OngU9ZChqtqkUsK+5uQKjCifS5YqeXnNtftZPfwg+0pTnbMyGQAqCmDeC6i8E35UFZ3X1LScNvXlOGO/3MS89scEWCZjDAqAREa+E7Wiiu6jrQVqfDMs/t0Otm9JyTlBsM5QkgjGZrUkpVJmAGy+nG0Kai5501yNQMXpzf4gsOH0GD0EAkPHqFy09sKEwLcHuXb+UU/2EO7swY5hqD5M0ua+djAl1qz8KIzMs4t7duGBafB/Mx8XVw8Rdkmcj8zyYJb9A6JQBHcWm63XMs+hzpBwKJ10A6Oks68YPrVcyVBmbJjCNRH/gpG8NAAeftXcy1fAhiuB2FfwS7MO1id9l3OxqxrNuU7GlO1NGtj+a+jHzrL6R+5giizFN1fdeDM4raCB1bRvSXv03tqKSdLqk1Ywcs88zmcBqzO3okPr8yPCnvkmrBarwM+x6UtuTXzajWAQ2wtVfFkziTjqdSBvwm/HilLPp6ORdo8vyAOiGNCcgGtV3r8gAqMnU7xAEGv1NamQ==</CipherValue>

         </CipherData>

      </EncryptedData>

   </ProxyConfig>

  </Mindbreeze>

</configuration>

Installation on Microsoft SharePoint ServerPermanenter Link zu dieser Überschrift

Dafür ist eine supplemental web.config Datei notwendig (z.B. webconfig.mindbreeze.xml) die im C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\CONFIG Verzeichnis liegen soll. Der ProxyConfig Node kann vorher verschlüsselt sein.

webconfig.mindbreeze.xml:

<actions>

   <remove path="configuration/system.webServer/handlers/add[@name='OAuthProxy']"/>

   <add path="configuration/system.webServer/handlers">

       <add name="OAuthProxy"

       path="/_api_mindbreezeinspire"

       verb="*"

       type="Mindbreeze.ResourceProxy.OAuthProxy"

       resourceType="Unspecified"

       preCondition="integratedMode" />

   </add>

   <remove path="configuration/configSections/sectionGroup[@name='Mindbreeze']" />

   <add path="configuration/configSections">

       <sectionGroup name="Mindbreeze">

          <section name="ProxyConfig"

          type="Mindbreeze.ResourceProxy.ProxyConfig"

          allowLocation="true"

          allowDefinition="Everywhere"/>

        </sectionGroup>

    </add>

    <remove path="configuration/Mindbreeze"/>

    <add path="configuration">

      <Mindbreeze>

       <ProxyConfig logFile="c:\temp\proxy.log" logLevel="Error">

<ServerUrl url="<clienservice>"

oauth2Endpoint="https://keykloakserver/auth/realms/master/protocol/openid-connect/token

username="iis-client-user"

password="<password>"

clientId="iis-client"

clientSecret="<clientsecret>"

disableSSLValidation="false"/>

     </ProxyConfig>

     </Mindbreeze>

    </add>

</actions>

Die Installation von Mindbreeze supplemental web.config kann mit Hilfe des stsadm Tools für alle SharePoint Webapplikationen auf einmal gemacht werden. Dafür soll im Microsoft SharePoint Management Shell folgendes Befehl ausgeführt werden:

stsadm -o copyappbincontent