Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info

Beachten Sie, dass die {TENANTGUID} durch die Id vom Entra ID auszutauschen.

Without-IdS-Variante

...

languagexml

...

Entra Id - Authority: Tenant vs. Common-Endpoint

Über die Konfiguration <office365Auth authority="https://login.microsoftonline.com/{TENANTGUID}" ... /> zeigt die primedocs Instanz auf den Entra Id Tenant. Alle Benutzer und Gruppen in diesem Entra ID Mandant sind dann nutzbar inkl. Gast-Benutzer.

Grundsätzlich kann die primedocs Instanz auch in einen “Multitenancy” Modus versetzt werden, in dem Fall zeigt die Konfiguration auf den Common-Endpoint https://login.microsoftonline.com/common/v2.0/. Hierbei muss auch die Entra ID Apps App Registration für Multitenancy registriert werden.
Diese Konfigration kann bei “Plattform-Betreibern” genutzt werden um mehrere Mandaten über eine primedocs Instanz nutzbar zu machen.

...

Without-IdS-Variante

Code Block
languagexml
<primedocs>
  <datasources>
    <add id="26735c39-3d6e-44c6-b701-f5ab6cc429fd" isPrimary="true" dbConnectionString="Data Source=your-sql-server.yourcorp.local;Initial Catalog=primedocs_Prod;User ID=primedocsuser;Password=password_here;MultipleActiveResultSets=True;Encrypt=False" name="primedocs" />
  </datasources>
  <apps>
    <add id="7e132bcb-b088-4cb2-b717-30174884b8f4" name="Service" url="https://your-url.local/service/" logFilePath="Service\" type="Service" />
    <add id="60e0654e-9e62-4df2-8b24-4d00f2677cfa" name="HealthMonitor" url="https://your-url.local/healthmonitor/" type="HealthMonitor" />
    <add id="80e85dff-e533-42df-b8f3-930598d9b955" name="JobHost" logFilePath="JobHost\" type="JobHost" />
    <add id="f7199131-de81-4d40-a254-39e7db9660f0" name="DataSourceAdminApp" url="https://your-url.local/datasourceadminapp/" logFilePath="DataSourceAdminApp\" type="DataSourceAdminApp" />
    <add id="c5667157-6cce-4da6-93ce-464b68947349" name="Connect" url="https://your-url.local/connect/" logFilePath="Connect\" type="Connect" />
    <add id="7ee9d094-e728-4e36-91ea-8fb64aa6b765" name="AddressService" url="https://your-url.local/addressservice/" logFilePath="AddressService\" type="AddressService" />
  </apps>
  <service streamBufferSizeInBytes="81920">
    <syncBehavior maxConcurrentClients="30" initialAverageSyncTimeInSeconds="10" timeoutInSeconds="120" />
  </service>
  <healthMonitor basicAuth="user:iPvKHKDmvlwP" clientSecret="healthmonitor-k9VBA5TXke9P" intervalInSeconds="600"/>
</primedocs>

...

Datenquellen (“datasources”)

In den “Datenquellen” (datasources) werden alle Daten von primedocs gespeichert. In den meisten Fällen enthält eine primedocs Instanz eine Datenquelle, welche als isPrimary markiert ist.
Es gibt die Möglichkeit mehrere Datenquellen zu hinterlegen, sodass z.B. Produktiv- und Testsysteme auf einer Instanz hinterlegt werden können oder das es für verschiedene Abteilungen verschiedene Datenquellen gibt.

Beispiel mehrerer Datenquellen für Produktiv- und Testsystem mit Windows Authentifizierung:

Code Block
  <datasources>
    <add id="26735c39-3d6e-44c6-b701-f5ab6cc429fd" isPrimary="true" dbConnectionString="Data Source=your-sql-server.yourcorp.local;Initial Catalog=primedocs_Prod;User ID=primedocsuser;Password=password_here;MultipleActiveResultSets=True;Encrypt=False" 
         name="primedocs - Prod" />
    <add id="9ce36252-0e25-4f40-a760-cd70dcfe124a" isPrimary="false" dbConnectionString="Data Source=your-sql-server.yourcorp.local;Initial Catalog=primedocs_Test;User ID=primedocsuser;Password=password_here;MultipleActiveResultSets=True;Encrypt=False" 
         name="primedocs - Test" />         
  </datasources>
Note

Beachten Sie, dass bei der Authentifizierung über Entra Id die datasources immer mit dem Attribut allowedForTenant="{TENANTGUID}" ausgestattet sein müssen und die {TENANTGUID} der Entra Id Tenant Id entsprechen muss.

“Multitenancy”-Modus

In der Standardeinstellung, sind alle Datenbanken für jeden Benutzer der primedocs Instanz sichtbar. Möchte man allerdings Datenbanken nur für bestimmte Benutzergruppen freigeben kann man dies über das Attribut allowedForGroups="..." steuern.
Hierbei ist es wichtig, dass keine Datenquelle mehr mit isPrimary="true" konfiguriert ist. Die “primäre Datenquelle” ist dann jeweils die erste Datenquelle, welche für den Benutzer in Frage kommt.

Über das Attribut allowedForGroups können kommasepariert (x,y) Gruppen SIDs bzw. Entra ID Group Ids angegeben werden. Zusätzlich kann ein * als Wildcard hinzugefügt werden.

Beispiel mit Windows Authentifizierung:

Alle sehen die Produktivdatenquelle, aber nur Benutzer in der Gruppe mit der SID S-1-5-21-2445566778-2513070483-412345678-11111 und S-1-5-21-2445566778-2513070483-412345678-22222 sehen die Testdatenquelle

Code Block
  <datasources>
    <add id="26735c39-3d6e-44c6-b701-f5ab6cc429fd" dbConnectionString="Data Source=your-sql-server.yourcorp.local;Initial Catalog=primedocs_Prod;User ID=primedocsuser;Password=password_here;MultipleActiveResultSets=True;Encrypt=False" 
         allowedForGroups="*"
         name="primedocs - Prod" />
    <add id="26735c399ce36252-3d6e0e25-44c64f40-b701-f5ab6cc429fd" isPrimary="true"a760-cd70dcfe124a" dbConnectionString="Data Source=your-sql-server.yourcorp.local;Initial Catalog=primedocs_ProdTest;User ID=primedocsuser;Password=password_here;MultipleActiveResultSets=True;Encrypt=False" name="primedocs"
/>   </datasources>   <apps>     <add id="7e132bcb-b088-4cb2-b717-30174884b8f4" name="Service" url="https://your-url.local/service/" logFilePath="Service\" type="Service" />allowedForGroups="S-1-5-21-2445566778-2513070483-412345678-11111,S-1-5-21-2445566778-2513070483-412345678-22222"
        <add idname="60e0654e-9e62-4df2-8b24-4d00f2677cfa" name="HealthMonitor" url="https://your-url.local/healthmonitor/" type="HealthMonitor" />primedocs - Test" />        <add id="80e85dff-e533-42df-b8f3-930598d9b955"
name="JobHost" logFilePath="JobHost\" type="JobHost" /> </datasources>

Beispiel mit Entra ID:

Ähnliches Szenario, aber allowedForTenant muss angegeben sein und die Gruppen IDs entsprechen den Object Ids aus dem Entra Id.

Code Block
  <datasources>
    <add id="f719913126735c39-de813d6e-4d4044c6-a254b701-39e7db9660f0f5ab6cc429fd" namedbConnectionString="DataSourceAdminApp"Data urlSource="https://your-sql-url.local/datasourceadminapp/" logFilePath="DataSourceAdminApp\" type="DataSourceAdminApp" />server.yourcorp.local;Initial Catalog=primedocs_Prod;User ID=primedocsuser;Password=password_here;MultipleActiveResultSets=True;Encrypt=False" 
        <add idallowedForTenant="c5667157c86d1b74-6cce6646-4da64efa-93ceb2ce-464b68947349" name="Connect" url="https://your-url.local/connect/" logFilePath="Connect\" type="Connect60f4e21bf740"
         allowedForGroups="*"
         name="primedocs - Prod" />
    <add id="7ee9d0949ce36252-e7280e25-4e364f40-91eaa760-8fb64aa6b765cd70dcfe124a" namedbConnectionString="AddressService"Data urlSource="https://your-url.local/addressservice/" logFilePath="AddressService\" type="AddressService" />
  </apps>
  <service streamBufferSizeInBytes="81920">sql-server.yourcorp.local;Initial Catalog=primedocs_Test;User ID=primedocsuser;Password=password_here;MultipleActiveResultSets=True;Encrypt=False" 
         allowedForTenant="c86d1b74-6646-4efa-b2ce-60f4e21bf740"
       <syncBehavior maxConcurrentClients="30" initialAverageSyncTimeInSecondsallowedForGroups="10" timeoutInSeconds="120" />
  </service>
  <healthMonitor basicAuth="user:iPvKHKDmvlwP" clientSecret="healthmonitor-k9VBA5TXke9P" intervalInSeconds="600"/>
</primedocs>c1d880da-2e18-4e7e-b764-2346653a4a2e,970d75da-a393-4ad4-a19c-2ce14793bace"
         name="primedocs - Test" />         
  </datasources>

Für diese Konfiguration muss in der Entra ID Apps der groups-Claim zusätzlich konfiguriert werden:

image-20240514-202839.pngImage Added

...

cert.pfx

Das in der primedocs.config angegebene cert.pfx dient der Signierung der Authentifizierungstokens und hat keinen Bezug zu TLS/SSL Zertifikaten.

...