StoreFront™ 2507 LTSR

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

Dieser Artikel beschreibt, wie StoreFront und ein NetScaler ADC konfiguriert werden, damit Benutzer sich mit Entra ID über OIDC authentifizieren und anschließend Single Sign-On bei einem Entra-verbundenen VDA durchführen können.

WICHTIG:

Die Entra ID-Authentifizierung über OIDC und Single Sign-On für 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 Apps
  • Für Starts aus einem Webbrowser in die Citrix Workspace-App, um SSO für VDAs zu ermöglichen, die 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, sodass 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 aus, 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.

Azure ID

Client-Geheimnis erstellen

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

Anwendungsberechtigungen konfigurieren

So konfigurieren Sie Anwendungsberechtigungen:

  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 <Mandantenname> 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 Berechtigung erteilen

Citrix DaaS zur Aktivierung des XML-Vertrauens konfigurieren

Standardmäßig authentifiziert Citrix DaaS Anfragen mithilfe der Active Directory-Anmeldeinformationen des Benutzers. Bei der Entra ID-Authentifizierung verfügt StoreFront nicht über die 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 XML-Vertrauen

  1. (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.

NetScaler-Authentifizierungsprofil konfigurieren

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 zur Anmeldung an einen externen OAuth-IdP (wie Microsoft Entra ID) umgeleitet und wie die nach der Authentifizierung empfangenen OAuth-Tokens verarbeitet werden. Sie legt Endpunkte, Client-Anmeldeinformationen, Bereiche und die Art und Weise fest, 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.

Authentifizierungs-Virtual-Server erstellen

Der Authentifizierungs-Virtual-Server 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-->

OAuth-Richtlinie und -Aktion erstellen

Die OAuth-Aktion gibt an, wie 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 übergibt, wenn es sich bei StoreFront authentifiziert. StoreFront überprüft, ob die OID mit den Details übereinstimmt, die es beim Nachschlagen des Entra ID-Zugriffstokens erhält, andernfalls 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, damit Benutzer gezwungen sind, sich erneut zu authentifizieren, wenn sie versuchen, über den NetScaler auf StoreFront zuzugreifen.

Authentifizierungsrichtlinie an den Virtual Server binden

bind authentication vserver EntraId_Authentication_VirtualServer \
  -policy EntraId_Authentication_Policy \
  -priority 100 \
  -gotoPriorityExpression END

<!--NeedCopy-->

Authentifizierungsprofil erstellen

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

VPN-Virtual-Server erstellen und Authentifizierungsprofil binden

Führen Sie die Schritte 1, 2 und 4 aus NetScaler Gateway in StoreFront integrieren aus, unter Verwendung des in den vorherigen Schritten erstellten Authentifizierungsprofils.

Alternativ können Sie, wenn Sie bereits ein geeignetes Citrix Gateway besitzen, 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 übermitteln, damit dieses den authentifizierten Benutzer validieren und die Gruppenzugehörigkeit nachschlagen kann. Standardmäßig sendet das Citrix Gateway nur den Active Directory-Benutzernamen und das Kennwort. Im Falle der Entra ID-Authentifizierung muss es das Entra ID-Zugriffstoken übermitteln, damit StoreFront Benutzerinformationen über die Microsoft Graph API nachschlagen kann. Dazu 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 Funktion für die Rewrite-Richtlinie standardmäßig deaktiviert ist und noch nicht aktiviert wurde, 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-->

Citrix Gateway in StoreFront konfigurieren

  1. NetScaler Gateway-Instanz in StoreFront hinzufügen.

  2. Die Citrix Gateways konfigurieren.

    • Legen Sie den Anmeldetyp auf Domäne fest.

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

  3. Das Gateway für den Remotezugriff konfigurieren für den Store, der die Citrix DaaS-Ressourcen aggregiert.

  4. Aktivieren und konfigurieren Sie die Entra ID-Authentifizierung vom NetScaler Gateway aus. 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-->

Entra ID SSO für VDAs konfigurieren

Sobald Sie StoreFront und Ihr Citrix Gateway für die Authentifizierung von Benutzern über Entra ID konfiguriert haben, können Sie Entra ID SSO für 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.

NetScaler ADC Content Switching konfigurieren

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 Ablaufs generiert StoreFront ein Token, das von einem in Citrix Cloud ausgeführten 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 VPN-Virtual Service 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.

Load Balancer erstellen, um Datenverkehr vom Content Switcher an StoreFront weiterzuleiten

Wenn Sie bereits einen Load Balancer Virtual 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 den/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-->

SSL Content Switching Virtual Server erstellen

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

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-->

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

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 StoreFront Virtual Servers. Sie können entweder den im vorherigen Schritt erstellten Load Balancer lb_vs oder einen vorhandenen Load Balancer Virtual 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-->

Content Switching-Richtlinie für den gesamten anderen Datenverkehr erstellen

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-->

VDA Entra ID Single Sign-On konfigurieren

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 beim VDA eingeben zu müssen.

$store = Get-STFStoreService /Citrix/EntraStore
Set-STFStoreLaunchOptions -StoreService $store -EntraIdSsoEnabled $true
<!--NeedCopy-->

Überlegungen zum Aktivieren oder Deaktivieren von Entra ID SSO

  1. Aktivieren Sie Entra ID Single Sign-On erst, nachdem Sie alle unter Microsoft Entra Single Sign-On beschriebenen Konfigurationen abgeschlossen haben. Andernfalls schlägt Single Sign-On fehl, und Benutzer können Startverzögerungen oder Fehler erfahren.

  2. Entra ID SSO für VDAs wird nur bei Verwendung von OIDC-basierter Authentifizierung unterstützt. Es wird nicht mit SAML unterstützt.

  3. StoreFront unterstützt nicht die gleichzeitige Aktivierung von Federated Authentication Service und Entra ID SSO in demselben Store.

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