StoreFront™ 2507 LTSR

Entra ID-Authentifizierung über OIDC und Single Sign-On zu VDA

Dieser Artikel beschreibt, wie StoreFront und ein NetScaler ADC konfiguriert werden, um Benutzern die Authentifizierung mit Entra ID über OIDC und anschließend das Single Sign-On zu einem Entra-verbundenen VDA zu ermöglichen.

WICHTIG:

Die Entra ID-Authentifizierung über OIDC und Single Sign-On zu VDA befindet sich derzeit in der Vorschauphase. Diese Funktion wird ohne Support bereitgestellt und wird noch nicht für den Einsatz in Produktionsumgebungen empfohlen.

Voraussetzungen

  • NetScaler ADC
  • StoreFront 2507 LTSR CU1 oder höher
  • Microsoft Entra ID und ein Konto mit einer der folgenden Berechtigungen:
    • Cloud Application Administrator
    • Application Administrator
    • Global Administrator
  • DaaS-Abonnement mit Konnektoren. Dies ist nicht mit CVAD verfügbar.
  • Veröffentlichte Desktops und/oder Anwendungen
  • Für Starts aus einem Webbrowser in die Citrix Workspace-App, um SSO zu VDAs zu ermöglichen: Citrix Web Extension.

Entra ID-Authentifizierung mit OIDC

Dieser Abschnitt beschreibt, wie NetScaler und StoreFront konfiguriert werden, damit Benutzer sich mit Entra ID authentifizieren können. In dieser Konfiguration können Benutzer entweder eine Hybrididentität oder eine reine Entra-Identität ohne Active Directory-Konto haben.

Erstellen einer Microsoft Azure Entra ID-Anwendung

Eine App-Registrierung in Microsoft Entra ID definiert Ihre Anwendung so, dass Entra ID sie erkennt – in diesem Fall NetScaler OIDC. Diese Registrierung verwaltet auch die Authentifizierungs- und Autorisierungsanfragen der Anwendung. Da OAuth einen vertrauenswürdigen Identitätsanbieter (IdP) zur Authentifizierung von Benutzern und zur Ausstellung von Tokens erfordert, teilt die Registrierung Ihrer App Entra ID mit: „Diese Anwendung verwendet Sie als ihren IdP für OAuth-Flows.“

  1. Melden Sie sich beim Azure-Portal für den Entra ID-Mandanten an, den Sie für die NetScaler- oder StoreFront-Authentifizierung verwenden.
  2. Gehen Sie zu Microsoft Entra ID resource > Manage > App registrations und wählen Sie dann New registration aus.
  3. Benennen Sie die Anwendung, zum Beispiel NetScaler StoreFront Authentication.
  4. Wählen Sie unter Supported account types die Option Accounts in this organizational directory only aus.
  5. Wählen Sie unter Redirect URI die Option Web für den Typ der Anwendung, die Sie erstellen möchten. Geben Sie den URI ein, an den das Zugriffstoken gesendet wird. Verwenden Sie das Format <NetScaler Virtual Server URL>/oauth/login, zum Beispiel https://netscalerentra.customer.com/oauth/login.

    Diagramm, das den Anforderungsfluss mit dem Content Switcher zeigt

Erstellen eines Client-Geheimnisses

So erstellen Sie ein Client-Geheimnis:

  1. Nachdem Sie die Anwendung registriert haben, gehen Sie zu Manage > Certificates & Secrets.
  2. Wählen Sie Client secrets und dann New client secret aus. Ihre App verwendet diese Anmeldeinformationen, um sicher mit dem IdP zu kommunizieren und Tokens anzufordern.
  3. Geben Sie eine Beschreibung des Geheimnisses und eine Dauer an.
  4. Nachdem Sie das Geheimnis erstellt haben, notieren Sie den Geheimniswert, da Sie ihn später im Einrichtungsprozess benötigen und er nur während dieser Erstellungsphase sichtbar ist.

Azure NetScaler

Konfigurieren von Anwendungsberechtigungen

So konfigurieren Sie App-Berechtigungen:

  1. Gehen Sie zu Manage > App registrations und wählen Sie dann Ihre Anwendung aus.
  2. Wählen Sie Manage > API Permissions aus.
  3. Die Berechtigung User.Read ist standardmäßig bereits hinzugefügt.
  4. Fügen Sie openid und profile hinzu.
  5. Wählen Sie Grant admin consent for <tenant name> und akzeptieren Sie.

„Grant admin consent for“ in den API-Berechtigungen in Microsoft Entra ID bedeutet, dass ein Administrator im Namen aller Benutzer in der Organisation die Genehmigung erteilt, dass eine Anwendung auf bestimmte Ressourcen oder APIs mit den angeforderten Berechtigungen zugreifen darf.

Azure grant permission

Konfigurieren von Citrix DaaS zur Aktivierung des XML-Vertrauens

Standardmäßig authentifiziert Citrix DaaS Anfragen mithilfe der Active Directory-Anmeldeinformationen des Benutzers. Bei der Entra ID-Authentifizierung verfügt StoreFront nicht über diese Anmeldeinformationen. Daher müssen Sie DaaS so konfigurieren, dass es StoreFront vertraut, ohne eine Authentifizierung zu erfordern. Es wird dringend empfohlen, stattdessen Sicherheitsschlüssel zu aktivieren, um eine Authentifizierung auf Dienstebene bereitzustellen.

  1. Melden Sie sich bei Citrix Cloud an und gehen Sie zur DaaS-Konsole.
  2. Gehen Sie zu Settings.
  3. Aktivieren Sie XML trust.

    Azure grant permission

  4. (Optionaler Schritt) Für zusätzliche Sicherheit können Sie Sicherheitsschlüssel zwischen DaaS und StoreFront aktivieren. Weitere Informationen finden Sie unter Sicherheitsschlüssel verwalten in der Citrix DaaS™-Dokumentation.

Konfigurieren des NetScaler-Authentifizierungsprofils

Dieser Abschnitt beschreibt, wie ein NetScaler-Authentifizierungsprofil konfiguriert wird, das Sie an Ihren Gateway-VPN-Virtual-Server binden können. Diese Konfiguration weist den ADC an, wie Benutzer für die Anmeldung zu einem externen OAuth-IdP (wie Microsoft Entra ID) umgeleitet werden und wie die nach der Authentifizierung empfangenen OAuth-Tokens verarbeitet werden. Sie spezifiziert Endpunkte, Client-Anmeldeinformationen, Scopes und wie der ADC Benutzerinformationen aus Tokens extrahiert.

Sie benötigen das Client-Geheimnis aus den vorherigen Schritten und die Microsoft Entra ID-Authentifizierungsendpunkte. Die Authentifizierungsendpunkte finden Sie im Azure-Portal, indem Sie zur Übersicht Ihrer App-Registrierung gehen und auf die Registerkarte Endpoints klicken.

Erstellen eines virtuellen Authentifizierungsservers

Der virtuelle Authentifizierungsserver verarbeitet die Benutzerauthentifizierung.

add authentication vserver EntraId_Authentication_VirtualServer SSL 0.0.0.0 443 \
  -state ENABLED \
  -authentication ON \
  -td 0 -appflowLog ENABLED \
  -noDefaultBindings NO
bind ssl vserver EntraId_Authentication_VirtualServer \
  -certkeyName <Certificate Key Name>
<!--NeedCopy-->

Erstellen einer OAuth-Richtlinie und -Aktion

Die OAuth-Aktion spezifiziert, wie der NetScaler ADC mit einem OAuth-IdP wie Microsoft Entra ID interagiert. Diese Aktion ermöglicht es dem Citrix Gateway, Benutzer zur Anmeldung an den IdP umzuleiten und das zurückgegebene OAuth-Token zu verarbeiten. Sie setzt das userNameField auf oid, wodurch das Gateway die OID als Benutzernamen an StoreFront übergibt, wenn es sich authentifiziert. StoreFront validiert, dass die OID mit den Details übereinstimmt, die es beim Nachschlagen des Entra ID-Zugriffstokens erhält, anderenfalls schlägt die Authentifizierung fehl.

Sie benötigen die Client-ID und das Client-Geheimnis aus den vorherigen Schritten.

add authentication OAuthAction EntraId_Oauth_Server \
  -authorizationEndpoint "https://login.microsoftonline.com/<TenantId>/oauth2/v2.0/authorize\?prompt=login" \
  -tokenEndpoint "https://login.microsoftonline.com/<TenantId>/oauth2/v2.0/token" \
  -clientID <ClientId> \
  -clientSecret <ClientSecret> \
  -Attribute1 email \
  -Attribute2 family_name \
  -Attribute3 given_name \
  -Attribute4 upn \
  -CertEndpoint "https://login.microsoftonline.com/<TenantId>/discovery/v2.0/keys" \
  -userNameField oid \
  -allowedAlgorithms HS256 RS256 RS512 \
  -PKCE ENABLED \
  -tokenEndpointAuthMethod client_secret_post \
  -OAuthType GENERIC \
  -grantType CODE \
  -refreshInterval 1440
add authentication Policy EntraId_Authentication_Policy \
  -rule true \
  -action EntraId_Oauth_Server
<!--NeedCopy-->

Der authorizationEndpoint enthält den Abfragezeichenfolgenparameter prompt=login, sodass Benutzer gezwungen werden, sich erneut zu authentifizieren, wenn sie versuchen, über den NetScaler auf StoreFront zuzugreifen.

Binden der Authentifizierungsrichtlinie an den virtuellen Server

bind authentication vserver EntraId_Authentication_VirtualServer \
  -policy EntraId_Authentication_Policy \
  -priority 100 \
  -gotoPriorityExpression END
<!--NeedCopy-->

Erstellen eines Authentifizierungsprofils

add authentication authnProfile EntraId_Auth_Profile \
  -authnVsName EntraId_Authentication_VirtualServer \
  -AuthenticationLevel 0
<!--NeedCopy-->

Erstellen eines VPN-Virtual-Servers und Binden des Authentifizierungsprofils

Führen Sie die Schritte 1, 2 und 4 aus NetScaler Gateway in StoreFront integrieren aus, indem Sie das in den vorherigen Schritten erstellte Authentifizierungsprofil verwenden.

Alternativ können Sie, wenn Sie bereits ein geeignetes Citrix Gateway haben, das neue Authentifizierungsprofil daran binden. Das Ausführen dieses Befehls ersetzt das vorhandene Authentifizierungsprofil.

set vpn vserver <StoreFront ICA Proxy vServer> \
  -authentication ON \
  -authnProfile EntraId_Auth_Profile
<!--NeedCopy-->

Entra ID-Token-Injektionskonfiguration für SSO zu StoreFront

Nachdem das Citrix Gateway den Benutzer authentifiziert hat, muss es ausreichende Informationen an StoreFront übergeben, damit dieses die Authentifizierung des Benutzers validieren und die Gruppenmitgliedschaft nachschlagen kann. Standardmäßig sendet das Citrix Gateway nur den Active Directory-Benutzernamen und das Passwort. Im Falle der Entra ID-Authentifizierung muss es das Entra ID-Zugriffstoken übergeben, damit StoreFront Benutzerinformationen mithilfe der Microsoft Graph API nachschlagen kann. Um dies zu erreichen, müssen Sie eine Rewrite-Richtlinie hinzufügen, die das Entra ID-Token dem Aufruf hinzufügt, den es zur Authentifizierung des Benutzers bei StoreFront tätigt. Wenn die Rewrite-Richtlinie für das Entra ID-Zugriffstoken nicht wirksam wird, schlägt die Anmeldung fehl. Wenn die Rewrite-Richtlinienfunktion standardmäßig nicht bereits aktiviert ist, müssen Sie sie zuerst aktivieren.

enable ns feature Rewrite
add rewrite action EntraId_Oauth_Insert_AccessToken_Header insert_http_header X-Citrix-OIDC-Access-Token "AAA.USER.ATTRIBUTE(\"accesstoken\")" \
  -comment "A rewrite policy to add the OAUTH access_token to subsequent user authentication requests"
add rewrite policy EntraId_Oauth_Insert_AccessToken_Policy "HTTP.REQ.URL.TO_LOWER.ENDSWITH(\"gatewayauth/login\") || HTTP.REQ.URL.TO_LOWER.ENDSWITH(\"citrixagbasic/authenticate\")" EntraId_Oauth_Insert_AccessToken_Header \
  -comment "A rewrite policy to add the OAUTH access_token to subsequent user authentication requests"
bind vpn vserver <StoreFront ICA Proxy vServer> \
  -policy EntraId_Oauth_Insert_AccessToken_Policy \
  -priority 100 \
  -gotoPriorityExpression END \
  -type REQUEST
<!--NeedCopy-->

Konfigurieren von Citrix Gateway in StoreFront

  1. Fügen Sie eine NetScaler Gateway-Instanz in StoreFront hinzu.

  2. Konfigurieren Sie die Citrix Gateways.

    • Setzen Sie den Anmeldetyp auf Domain.

    • Geben Sie eine gültige Callback-URL an. Dies ist für die Entra ID-Authentifizierung mit StoreFront erforderlich.

  3. Konfigurieren Sie das Gateway für den Fernzugriff für den Store, der die Citrix DaaS-Ressourcen aggregiert.

  4. Aktivieren und konfigurieren Sie die Entra ID-Authentifizierung vom NetScaler Gateway. Führen Sie das folgende Powershell-Skript aus und ersetzen Sie dabei die Tenant-ID durch die ID Ihres Entra ID-Mandanten und /Citrix/EntraStore durch den Store-Pfad.

  $store = Get-STFStoreService /Citrix/EntraStore
  $authenticationService = Get-STFAuthenticationService -Store $store
  Set-STFEntraIdSettings -AuthenticationService $authenticationService -TenantId "<Your tenant id>" -Enabled $true
  <!--NeedCopy-->

Konfigurieren von Entra ID SSO zu VDAs

Sobald Sie StoreFront und Ihr Citrix Gateway für die Authentifizierung von Benutzern mit Entra ID konfiguriert haben, können Sie Entra ID SSO zu VDAs aktivieren, ohne FAS zu benötigen. Aktivieren Sie dies erst, nachdem Sie die DaaS-Konfiguration abgeschlossen haben. Weitere Informationen finden Sie unter Microsoft Entra Single Sign-On. Dies erfordert die folgenden zusätzlichen Konfigurationen für StoreFront und den NetScaler ADC.

Konfigurieren des NetScaler ADC Content Switching

Normalerweise gehen alle Anfragen an StoreFront über den Gateway-VServer und erfordern daher eine Authentifizierung. Wenn der Benutzer einen Entra ID-verbundenen VDA startet, muss die Citrix Workspace-App sich erneut bei Azure authentifizieren (SSO, wenn die Entra ID-Sitzung noch gültig ist) und ein Zugriffstoken abrufen. Als Teil dieses Flows generiert StoreFront ein Token, das von einem in Citrix Cloud laufenden Dienst validiert werden muss. Dieser Dienst muss in der Lage sein, den StoreFront-Endpunkt /Citrix/<StoreWeb>/Tickets/RedeemStoreTicket aufzurufen, um das Token zu validieren. Da dieser Dienst keinen Zugriff auf die NetScaler-Sitzung hat, ist es notwendig, den virtuellen VPN-Dienst für Aufrufe zur Einlösung des Tickets zu umgehen. Um dies zu erreichen, können Sie einen Content Switcher verwenden.

Diagramm, das den Anforderungsfluss mit dem Content Switcher zeigt

Aufrufe an /Citrix/<StoreWeb>/Tickets/RedeemStoreTicket werden an einen Load Balancer geleitet, der die Anfragen an StoreFront weiterleitet und dabei das Gateway umgeht. Beachten Sie, dass der Load Balancer erforderlich ist, da der Content Switcher nicht so konfiguriert werden kann, dass er den Datenverkehr direkt an eine URL leitet, und einen virtuellen Server als Ziel benötigt. Der Load Balancer führt keine Lastverteilung durch, sondern leitet den Datenverkehr lediglich an StoreFront weiter. Wenn Sie bereits einen geeigneten StoreFront-Load Balancer auf derselben Maschine haben, können Sie diesen stattdessen verwenden.

Alle anderen Aufrufe werden an den VPN-Virtual-Server des Gateways geleitet.

Erstellen eines Load Balancers für den Durchgang vom Content Switcher zu StoreFront

Wenn Sie bereits einen virtuellen Load Balancer-Server haben, der Ihre StoreFront-Servergruppe vorhält und auf derselben Maschine wie das Gateway läuft, können Sie diesen Schritt überspringen und den Content Switch so konfigurieren, dass er den Datenverkehr direkt an diesen virtuellen Server sendet. Andernfalls müssen Sie einen Load Balancer erstellen, um den Datenverkehr an die StoreFront-Server weiterzuleiten. Dies liegt daran, dass Content Switcher-Aktionen einen virtuellen Server referenzieren müssen.

Die Schritte unterscheiden sich geringfügig, je nachdem, ob StoreFront für HTTPS (empfohlen) oder HTTP konfiguriert ist.

StoreFront ist für HTTPS konfiguriert

Erstellen Sie einen Dienst stf_srv, der StoreFront über seine IP-Adresse repräsentiert, und binden Sie ihn an einen SSL-Load Balancer ohne Persistenz.

add service stf_srv <StoreFront Ip Address> SSL 443
add lb vserver lb_vs SSL <lb_vs Ip Address> 443 -persistenceType NONE -cltTimeout 180
bind lb vserver lb_vs stf_srv
<!--NeedCopy-->
StoreFront ist für HTTP konfiguriert

Erstellen Sie einen Dienst stf_srv, der StoreFront über seinen FQDN repräsentiert, und binden Sie ihn an einen HTTP-Load Balancer ohne Persistenz.

add server storefront1 <storefront fqdn>
add service stf_srv storefront1 HTTP 80
add lb vserver lb_vs HTTP 0.0.0.0 0 -persistenceType NONE -cltTimeout 180
bind lb vserver lb_vs stf_srv
<!--NeedCopy-->

Erstellen eines virtuellen SSL Content Switching Servers

Erstellen Sie einen virtuellen SSL Content Switching Server, um Client-Anfragen zu verarbeiten. Dieser virtuelle Content Switching Server lauscht auf HTTPS-Verkehr auf Port 443 und leitet Anfragen entweder an den Gateway-VPN-Virtual-Server oder leitet sie über den Load Balancer an StoreFront weiter.

Standardmäßig ist Content Switching deaktiviert, daher müssen Sie es aktivieren, falls Sie dies noch nicht getan haben.

enable feature CS
add cs vserver cs_vs SSL <cs_vs Ip Address> 443 -cltTimeout 180 -persistenceType NONE
bind ssl vserver cs_vs -certkeyName <Certificate Name>
<!--NeedCopy-->

Erstellen einer Content Switching-Richtlinie für die Ticket-Einlösung

Erstellen Sie eine Content Switching-Richtlinie für die Lastverteilung basierend auf einer URL, die einen StoreFront-Ticket-Einlösungspfad enthält.

Diese Richtlinie gleicht Anfragen ab, wenn die URL /Citrix/StoreEntraWeb/Tickets/RedeemStoreTicket enthält, und leitet sie an den Load Balancer weiter, ohne den VPN-Virtual-Server zu durchlaufen.

Ersetzen Sie StoreEntraWeb durch den Namen der StoreFront-Website aus der Webrichtlinie des virtuellen StoreFront-Servers. Sie können entweder den im vorherigen Schritt erstellten Load Balancer lb_vs oder einen vorhandenen virtuellen Load Balancer-Server verwenden, der Ihre StoreFront-Server vorhält.

add cs action cs_lb_vs -targetLBVserver lb_vs
add cs policy cs_lb_vs_pol -rule "HTTP.REQ.URL.CONTAINS(\"/Citrix/StoreEntraWeb/Tickets/RedeemStoreTicket\")" -action cs_lb_vs
bind cs vserver cs_vs -policyName cs_lb_vs_pol -priority 100
<!--NeedCopy-->

Erstellen einer Content Switching-Richtlinie für den gesamten anderen Datenverkehr

Erstellen Sie eine Catch-All-Content Switching-Richtlinie, um den gesamten anderen StoreFront-Datenverkehr über den VPN-Virtual-Server zur Authentifizierung zu senden.

add cs action cs_vpn_vs -targetVserver <VPN vServer>
add cs policy cs_vpn_pol -rule TRUE -action cs_vpn_vs
bind cs vserver cs_vs -policyName cs_vpn_pol -priority 110
<!--NeedCopy-->

Konfigurieren von VDA Entra ID Single Sign-On

Single Sign-On ermöglicht es Benutzern, sich einmal beim Citrix Gateway zu authentifizieren und dann auf ihre virtuellen Desktops und Anwendungen zuzugreifen, ohne ihre Anmeldeinformationen erneut im VDA eingeben zu müssen.

$store = Get-STFStoreService /Citrix/EntraStore
$authenticationService = Get-STFAuthenticationService -Store $store
Set-STFEntraIdSettings -AuthenticationService $authenticationService -TenantId "<Your tenant id>" -Enabled $true
<!--NeedCopy-->

Überlegungen zum Aktivieren oder Deaktivieren von Entra ID SSO

  1. Aktivieren Sie Single Sign-On nur, wenn Sie die Azure Entra ID Enterprise Application konfigurieren und StoreFront mit dem Mandanten aktualisieren. Wenn Sie diese Einstellung für Stores aktivieren, die derzeit Entra ID mit SAML ohne diese Einstellungen verwenden, kann dies bestehendes Single Sign-On potenziell unterbrechen, wenn Sie FAS verwenden.
  2. Wenn Sie die Einstellung für bestehende Stores aktivieren, die Entra ID mit SAML verwenden, bei denen die VDAs derzeit kein SSO haben, kann der Start verzögert werden und/oder es können Fehler im Zusammenhang mit den Entra ID-Authentifizierungseinstellungen auftreten.
Entra ID-Authentifizierung über OIDC und Single Sign-On zu VDA