Federeren met AD FS van een klant

In dit artikel wordt beschreven hoe een Multitenant SaaS-toepassing verificatie via Active Directory Federation Services (AD FS) kan ondersteunen om te federeren met de AD FS.

Federatiescenario

Azure Active Directory (Azure AD) kunt u eenvoudig gebruikers van Azure AD-tenants aanmelden, waaronder Office365- en Dynamics CRM Online-klanten. Maar hoe zit het met klanten die on-premises Active Directory op een bedrijfs intranet?

Een optie is dat deze klanten hun on-premises AD synchroniseren met Azure AD, met behulp [van Azure AD Verbinding maken]. Sommige klanten kunnen deze benadering echter mogelijk niet gebruiken vanwege it-beleid van het bedrijf of om andere redenen. In dat geval is een andere optie om te federeren via Active Directory Federation Services (AD FS).

Dit scenario inschakelen:

  • De klant moet een internet-gerichte AD FS hebben.
  • De SaaS-provider implementeert zijn eigen AD FS farm.
  • De klant en de SaaS-provider moeten [federatievertrouwen instellen.] Dit gebeurt handmatig.

Er zijn drie hoofdrollen in de vertrouwensrelatie:

  • De klant AD FS is de accountpartner, die verantwoordelijk is voor het authenticeren van gebruikers van de AD van de klant en het maken van beveiligingstokens met gebruikersclaims.

  • De saaS-provider AD FS de [bronpartner], die de accountpartner vertrouwt en de gebruikersclaims ontvangt.

  • De toepassing wordt geconfigureerd als een relying party (RP) in de AD FS van de SaaS-AD FS.

    Federatievertrouwen

Notitie

In dit artikel gaan we ervan uit dat de toepassing OpenID-Verbinding maken als verificatieprotocol gebruikt. Een andere optie is om WS-Federation te gebruiken.

Voor OpenID Verbinding maken moet de SaaS-provider gebruikmaken van AD FS 2016, dat wordt uitgevoerd in Windows Server 2016. AD FS 3.0 biedt geen ondersteuning voor OpenID-Verbinding maken.

Zie het voorbeeld active-directory-dotnet-webapp-wsfederationvoor een voorbeeld van het gebruik van WS-Federation met ASP.NET 4.

<a name="authentication-flow">Verificatiestroom

  1. Wanneer de gebruiker op 'aanmelden' klikt, wordt de toepassing omgeleid naar een OpenID Verbinding maken-eindpunt op de AD FS van de SaaS-AD FS.
  2. De gebruiker voert de gebruikersnaam van zijn of haar organisatie in (" alice@corp.contoso.com "). AD FS maakt gebruik van thuis realmdetectie om om te leiden naar de AD FS van de klant, waar de gebruiker zijn of haar referenties invoert.
  3. De klant verzendt AD FS claims naar de saaS-provider AD FS, met behulp van WF-Federation (of SAML).
  4. Claims stromen van AD FS naar de app met behulp van OpenID-Verbinding maken. Hiervoor is een protocolovergang van WS-Federation vereist.

Beperkingen

Standaard ontvangt de relying party-toepassing alleen een vaste set claims die beschikbaar zijn in de id_token, zoals wordt weergegeven in de volgende tabel. Met AD FS 2016 kunt u de id_token in OpenID-scenario'Verbinding maken aanpassen. Zie Aangepaste id-tokens in AD FS.

Claim Description
aud Publiek. De toepassing waarvoor de claims zijn uitgegeven.
verificatieinstant [Verificatie direct.] Het tijdstip waarop de verificatie heeft plaatsgevonden.
c_hash Code-hashwaarde. Dit is een hash van de inhoud van het token.
Exp Verlooptijd. De tijd waarna het token niet meer wordt geaccepteerd.
Iat Uitgegeven op. Het tijdstip waarop het token is uitgegeven.
Iss Uitgevende instelling. De waarde van deze claim is altijd de waarde van de bronpartner AD FS.
naam Gebruikersnaam. Voorbeeld: john@corp.fabrikam.com
nameidentifier Naam-id. De id voor de naam van de entiteit waarvoor het token is uitgegeven.
Nonce Sessie nonce. Een unieke waarde die wordt gegenereerd door AD FS om replay-aanvallen te voorkomen.
upn User Principal Name (UPN). Voorbeeld: john@corp.fabrikam.com
pwd_exp Verloopperiode van wachtwoord. Het aantal seconden tot het wachtwoord van de gebruiker of een vergelijkbaar verificatiegeheim, zoals een pincode. Verloopt.

Notitie

De iss-claim bevat de AD FS van de partner (deze claim identificeert doorgaans de SaaS-provider als verlener). Er wordt geen identificatie van de klantgegevens AD FS. U kunt het domein van de klant vinden als onderdeel van de UPN.

In de rest van dit artikel wordt beschreven hoe u de vertrouwensrelatie in kunt stellen tussen de RP (de app) en de accountpartner (de klant).

AD FS implementatie

De SaaS-provider kan AD FS on-premises of op azure-VM's implementeren. Voor beveiliging en beschikbaarheid zijn de volgende richtlijnen belangrijk:

  • Implementeer ten minste twee AD FS servers en twee proxyservers AD FS de beste beschikbaarheid van de AD FS service.
  • Domeincontrollers en AD FS mogen nooit rechtstreeks worden blootgesteld aan internet en moeten zich in een virtueel netwerk met directe toegang tot deze servers.
  • Webtoepassings-proxies (voorheen AD FS-proxies) moeten worden gebruikt voor het publiceren AD FS servers op internet.

Voor het instellen van een vergelijkbare topologie in Azure is het gebruik van virtuele netwerken, netwerkbeveiligingsgroepen, virtuele machines en beschikbaarheidssets vereist. Zie Guidelines for deploying Windows Server Active Directory on Azure Virtual Machines (Richtlijnen voor het implementeren van een Virtual Machines) voor meer Virtual Machines.

OpenID configureren Verbinding maken verificatie met AD FS

De SaaS-provider moet OpenID-Verbinding maken tussen de toepassing en de AD FS. Als u dit wilt doen, voegt u een toepassingsgroep toe aan AD FS. In dit [blogbericht]vindt u gedetailleerde instructies onder 'Een web-app instellen voor OpenId Verbinding maken u zich AD FS.'

Configureer vervolgens de OpenID Verbinding maken middleware. Het eindpunt voor metagegevens is , waarbij het domein het domein van de https://domain/adfs/.well-known/openid-configuration SaaS-provider is AD FS domein.

Normaal gesproken combineert u dit met andere OpenID Verbinding maken eindpunten (zoals Azure AD). U hebt twee verschillende aanmeldingsknoppen of een andere manier nodig om ze te onderscheiden, zodat de gebruiker naar het juiste verificatie-eindpunt wordt verzonden.

De AD FS-resourcepartner configureren

De SaaS-provider moet het volgende doen voor elke klant die verbinding wil maken via AD FS:

  1. Voeg een vertrouwensrelatie van de claimprovider toe.
  2. Voeg claimregels toe.
  3. Schakel thuis realmdetectie in.

Hier volgen de stappen in meer detail.

De vertrouwensrelatie van de claimprovider toevoegen

  1. Klik in Serverbeheer op Extra, en selecteer vervolgens AD FS Management.
  2. Klik in de consolestructuur onder AD FS met de rechtermuisknop op Claims Provider Vertrouwt. Selecteer Vertrouwensrelatie claimprovider toevoegen.
  3. Klik op Start om de wizard te starten.
  4. Selecteer de optie Gegevens importeren over de claimprovider die online of in een lokaal netwerk is gepubliceerd. Voer de URI van het eindpunt voor federatiemetagegevens van de klant in. (Voorbeeld: https://contoso.com/FederationMetadata/2007-06/FederationMetadata.xml .) U moet deze van de klant krijgen.
  5. Voltooi de wizard met de standaardopties.

Claimregels bewerken

  1. Klik met de rechtermuisknop op de zojuist toegevoegde vertrouwensrelatie van de claimprovider en selecteer Claimregels bewerken.
  2. Klik op Regel toevoegen.
  3. Selecteer 'Pass Through or Filter an Incoming Claim' en klik op Next. Schermopname van het selecteren van Pass Through of Filter een binnenkomende Claim onder Claim regelsjabloon.
  4. Voer een naam in voor de regel.
  5. Selecteer onder Binnenkomend claimtype de optie UPN.
  6. Selecteer Alle claimwaarden doorgeven. Schermopname van het selecteren van Alle claimwaarden doorgeven.
  7. Klik op Voltooien.
  8. Herhaal stap 2 tot en met 7 en geef Ankerclaimtype op voor het binnenkomende claimtype.
  9. Klik op OK om de wizard te voltooien.

<a name="enable-home-realm-discovery">Thuis realm-detectie inschakelen

Voer het volgende PowerShell-script uit:

Set-AdfsClaimsProviderTrust -TargetName &quot;name&quot; -OrganizationalAccountSuffix @(&quot;suffix")

waarbij 'name' de gebruiksvriendelijke naam is van de vertrouwensrelatie van de claimprovider en 'achtervoegsel' het UPN-achtervoegsel is voor de AD van de klant (bijvoorbeeld 'corp.fabrikam.com').

Met deze configuratie eindgebruikers kunt typen in hun organisatie-account en AD FS automatisch de bijbehorende claimprovider geselecteerd. Zie [Customizing the AD FS Sign-in Pages](Aanmeldingspagina's aanpassen) in de sectie Configure Identity Provider to use certain email suffixes (Id-provider configureren voor het gebruik van bepaalde e-mailachtervoegsels).

De AD FS-accountpartner configureren

De klant moet het volgende doen:

  1. Voeg een vertrouwensrelatie van een relying party (RP) toe.
  2. Voegt claimregels toe.

De RP-vertrouwensrelatie toevoegen

  1. Klik in Serverbeheer op Extra, en selecteer vervolgens AD FS Management.
  2. Klik in de consolestructuur onder AD FS met de rechtermuisknop op Relying Party Trusts. Selecteer Vertrouwensrelatie van Relying Party toevoegen.
  3. Selecteer Claimbewust en klik op Starten.
  4. Selecteer op de pagina Gegevensbron selecteren de optie Gegevens importeren over de claimprovider die online of in een lokaal netwerk is gepubliceerd. Voer de URI in van het eindpunt voor federatiemetagegevens van de SaaS-provider. Wizard Vertrouwensrelatie van Relying Party toevoegen
  5. Voer op de pagina Weergavenaam opgeven een naam in.
  6. Kies op de Access Control Beleid kiezen een beleid. U kunt iedereen in de organisatie toestaan of een specifieke beveiligingsgroep kiezen. Schermopname van de pagina Access Control kiezen.
  7. Voer de vereiste parameters in het vak Beleid in.
  8. Klik op Volgende om de wizard te voltooien.

Claimregels toevoegen

  1. Klik met de rechtermuisknop op de zojuist toegevoegde vertrouwensrelatie voor relying party's en selecteer Claimuitgiftebeleid bewerken.

  2. Klik op Regel toevoegen.

  3. Selecteer LDAP-kenmerken verzenden als claims en klik op Volgende.

  4. Voer een naam in voor de regel, zoals 'UPN'.

  5. Selecteer active directory onder Kenmerkopslag. Wizard Claimregel voor transformatie toevoegen

  6. In de sectie Toewijzing van LDAP-kenmerken:

    • Selecteer onder LDAP-kenmerk de optie User-Principal-Name.
    • Selecteer upn onder Uitgaand claimtype. Schermopname van het selecteren van User-Principal-Name en UPN onder Toewijzing van LDAP-kenmerken.
  7. Klik op Voltooien.

  8. Klik nogmaals op Regel toevoegen.

  9. Selecteer 'Claims verzenden met een aangepaste regel' en klik op Volgende.

  10. Voer een naam in voor de regel, zoals 'Type ankerclaim'.

  11. Voer onder Aangepaste regel het volgende in:

    EXISTS([Type == "http://schemas.microsoft.com/ws/2014/01/identity/claims/anchorclaimtype"])=>
    issue (Type = "http://schemas.microsoft.com/ws/2014/01/identity/claims/anchorclaimtype",
          Value = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn");
    

    Deze regel geeft een claim van het type anchorclaimtype uit. De claim vertelt de relying party om UPN te gebruiken als onveranderbare id van de gebruiker.

  12. Klik op Voltooien.

  13. Klik op OK om de wizard te voltooien.