Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Deze procedure bevat instructies voor het implementeren van een aangepaste verificatiemethode voor AD FS in Windows Server 2012 R2. Zie Aanvullende verificatiemethoden voor meer informatie.
Warning
Het voorbeeld dat u hier kunt bouwen, is alleen voor educatieve doeleinden. Deze instructies zijn bedoeld voor de eenvoudigste, meest minimale implementatie die mogelijk is om de vereiste elementen van het model beschikbaar te maken. Er is geen authenticatieback-end, foutverwerking of configuratiegegevens.
De ontwikkelomgeving instellen
In dit overzicht wordt Visual Studio 2012 gebruikt. Het project kan worden gebouwd met behulp van elke ontwikkelomgeving die een .NET-klasse voor Windows kan maken. Het project moet zich richten op .NET 4.5 omdat de methoden BeginAuthentication en TryEndAuthentication het type System.Security.Claims.Claim gebruiken, onderdeel van .NET Framework versie 4.5. Er is één verwijzing vereist voor het project:
| Verwijzings-DLL | Waar vind ik het? | Vereist voor |
|---|---|---|
| Microsoft.IdentityServer.Web.dll | Het dll-bestand bevindt zich in %windir%\ADFS op een Windows Server 2012 R2-server waarop AD FS is geïnstalleerd. Dit DLL-bestand moet naar de ontwikkelcomputer worden gekopieerd en er moet een expliciete verwijzing in het project worden aangemaakt. |
Interfacetypen, waaronder IAuthenticationContext, IProofData |
Maak de provider aan
In Visual Studio 2012: Kies Bestand-Nieuw-Project>>...
Selecteer Klassebibliotheek en zorg ervoor dat u zich richt op .NET 4.5.
Maak een kopie van Microsoft.IdentityServer.Web.dll van %windir%\ADFS op de Windows Server 2012 R2-server waarop AD FS is geïnstalleerd en plak deze in de map Project op uw ontwikkelcomputer.
Klik in Solution Explorer met de rechtermuisknop op Verwijzingen en Verwijzing toevoegen...
Blader naar uw lokale kopie van Microsoft.IdentityServer.Web.dll en voeg toe...
Klik op OK om de nieuwe verwijzing te bevestigen:
U moet nu zijn ingesteld om alle typen op te lossen die nodig zijn voor de provider.
Voeg een nieuwe klasse toe aan uw project (klik met de rechtermuisknop op uw project, Toevoegen... Klasse...) en geef deze een naam zoals MijnAdapter, zoals hieronder wordt weergegeven:
Vervang in het nieuwe bestand MyAdapter.cs de bestaande code door het volgende:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Globalization; using System.IO; using System.Net; using System.Xml.Serialization; using Microsoft.IdentityServer.Web.Authentication.External; using Claim = System.Security.Claims.Claim; namespace MFAadapter { class MyAdapter : IAuthenticationAdapter { public IAuthenticationAdapterMetadata Metadata { //get { return new <instance of IAuthenticationAdapterMetadata derived class>; } } public IAdapterPresentation BeginAuthentication(Claim identityClaim, HttpListenerRequest request, IAuthenticationContext authContext) { //return new instance of IAdapterPresentationForm derived class } public bool IsAvailableForUser(Claim identityClaim, IAuthenticationContext authContext) { return true; //its all available for now } public void OnAuthenticationPipelineLoad(IAuthenticationMethodConfigData configData) { //this is where AD FS passes us the config data, if such data was supplied at registration of the adapter } public void OnAuthenticationPipelineUnload() { } public IAdapterPresentation OnError(HttpListenerRequest request, ExternalAuthenticationException ex) { //return new instance of IAdapterPresentationForm derived class } public IAdapterPresentation TryEndAuthentication(IAuthenticationContext authContext, IProofData proofData, HttpListenerRequest request, out Claim[] outgoingClaims) { //return new instance of IAdapterPresentationForm derived class } } }We zijn nog niet klaar om te bouwen... er zijn nog twee interfaces over.
Voeg nog twee klassen toe aan uw project: een voor de metagegevens en de andere voor het presentatieformulier. U kunt deze toevoegen in hetzelfde bestand als de bovenstaande klasse.
class MyMetadata : IAuthenticationAdapterMetadata { } class MyPresentationForm : IAdapterPresentationForm { }Vervolgens kunt u de vereiste leden voor elk toevoegen. Eerst de metagegevens (met nuttige inline opmerkingen)
class MyMetadata : IAuthenticationAdapterMetadata { //Returns the name of the provider that will be shown in the AD FS management UI (not visible to end users) public string AdminName { get { return "My Example MFA Adapter"; } } //Returns an array of strings containing URIs indicating the set of authentication methods implemented by the adapter /// AD FS requires that, if authentication is successful, the method actually employed will be returned by the /// final call to TryEndAuthentication(). If no authentication method is returned, or the method returned is not /// one of the methods listed in this property, the authentication attempt will fail. public virtual string[] AuthenticationMethods { get { return new[] { "http://example.com/myauthenticationmethod1", "http://example.com/myauthenticationmethod2" }; } } /// Returns an array indicating which languages are supported by the provider. AD FS uses this information /// to determine the best language\locale to display to the user. public int[] AvailableLcids { get { return new[] { new CultureInfo("en-us").LCID, new CultureInfo("fr").LCID}; } } /// Returns a Dictionary containing the set of localized friendly names of the provider, indexed by lcid. /// These Friendly Names are displayed in the "choice page" offered to the user when there is more than /// one secondary authentication provider available. public Dictionary<int, string> FriendlyNames { get { Dictionary<int, string> _friendlyNames = new Dictionary<int, string>(); _friendlyNames.Add(new CultureInfo("en-us").LCID, "Friendly name of My Example MFA Adapter for end users (en)"); _friendlyNames.Add(new CultureInfo("fr").LCID, "Friendly name translated to fr locale"); return _friendlyNames; } } /// Returns a Dictionary containing the set of localized descriptions (hover over help) of the provider, indexed by lcid. /// These descriptions are displayed in the "choice page" offered to the user when there is more than one /// secondary authentication provider available. public Dictionary<int, string> Descriptions { get { Dictionary<int, string> _descriptions = new Dictionary<int, string>(); _descriptions.Add(new CultureInfo("en-us").LCID, "Description of My Example MFA Adapter for end users (en)"); _descriptions.Add(new CultureInfo("fr").LCID, "Description translated to fr locale"); return _descriptions; } } /// Returns an array indicating the type of claim that the adapter uses to identify the user being authenticated. /// Note that although the property is an array, only the first element is currently used. /// MUST BE ONE OF THE FOLLOWING /// "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname" /// "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn" /// "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" /// "http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid" public string[] IdentityClaims { get { return new[] { "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn" }; } } //All external providers must return a value of "true" for this property. public bool RequiresIdentity { get { return true; } } }Nu moet u F12 kunnen (met de rechtermuisknop klikken – Ga naar definitie) op IAuthenticationAdapter om de set vereiste interfaceleden te zien.
Vervolgens kunt u een implementatie van deze uitvoeren.
Vervang de volledige inhoud van uw klas door het volgende:
namespace MFAadapter { class MyAdapter : IAuthenticationAdapter { public IAuthenticationAdapterMetadata Metadata { //get { return new <instance of IAuthenticationAdapterMetadata derived class>; } } public IAdapterPresentation BeginAuthentication(Claim identityClaim, HttpListenerRequest request, IAuthenticationContext authContext) { //return new instance of IAdapterPresentationForm derived class } public bool IsAvailableForUser(Claim identityClaim, IAuthenticationContext authContext) { return true; //its all available for now } public void OnAuthenticationPipelineLoad(IAuthenticationMethodConfigData configData) { //this is where AD FS passes us the config data, if such data was supplied at registration of the adapter } public void OnAuthenticationPipelineUnload() { } public IAdapterPresentation OnError(HttpListenerRequest request, ExternalAuthenticationException ex) { //return new instance of IAdapterPresentationForm derived class } public IAdapterPresentation TryEndAuthentication(IAuthenticationContext authContext, IProofData proofData, HttpListenerRequest request, out Claim[] outgoingClaims) { //return new instance of IAdapterPresentationForm derived class } } }Vervolgens wordt het presentatieformulier weergegeven:
class MyPresentationForm : IAdapterPresentationForm { /// Returns the HTML Form fragment that contains the adapter user interface. This data will be included in the web page that is presented /// to the cient. public string GetFormHtml(int lcid) { string htmlTemplate = Resources.FormPageHtml; //todo we will implement this return htmlTemplate; } /// Return any external resources, ie references to libraries etc., that should be included in /// the HEAD section of the presentation form html. public string GetFormPreRenderHtml(int lcid) { return null; } //returns the title string for the web page which presents the HTML form content to the end user public string GetPageTitle(int lcid) { return "MFA Adapter"; } }Noteer de todo voor het element Resources.FormPageHtml hierboven. U kunt dit binnen een minuut oplossen, maar eerst gaan we de uiteindelijke vereiste retourinstructies toevoegen, op basis van de nieuw geïmplementeerde typen, aan uw eerste MyAdapter-klasse. Voeg hiervoor het volgende toe aan uw bestaande IAuthenticationAdapter-implementatie:
class MyAdapter : IAuthenticationAdapter { public IAuthenticationAdapterMetadata Metadata { //get { return new <instance of IAuthenticationAdapterMetadata derived class>; } get { return new MyMetadata(); } } public IAdapterPresentation BeginAuthentication(Claim identityClaim, HttpListenerRequest request, IAuthenticationContext authContext) { //return new instance of IAdapterPresentationForm derived class return new MyPresentationForm(); } public bool IsAvailableForUser(Claim identityClaim, IAuthenticationContext authContext) { return true; //its all available for now } public void OnAuthenticationPipelineLoad(IAuthenticationMethodConfigData configData) { //this is where AD FS passes us the config data, if such data was supplied at registration of the adapter } public void OnAuthenticationPipelineUnload() { } public IAdapterPresentation OnError(HttpListenerRequest request, ExternalAuthenticationException ex) { //return new instance of IAdapterPresentationForm derived class return new MyPresentationForm(); } public IAdapterPresentation TryEndAuthentication(IAuthenticationContext authContext, IProofData proofData, HttpListenerRequest request, out Claim[] outgoingClaims) { //return new instance of IAdapterPresentationForm derived class outgoingClaims = new Claim[0]; return new MyPresentationForm(); } }Nu voor het resourcebestand met het HTML-fragment. Maak een nieuw tekstbestand in de projectmap met de volgende inhoud:
<div id="loginArea"> <form method="post" id="loginForm" > <!-- These inputs are required by the presentation framework. Do not modify or remove --> <input id="authMethod" type="hidden" name="AuthMethod" value="%AuthMethod%" /> <input id="context" type="hidden" name="Context" value="%Context%" /> <!-- End inputs are required by the presentation framework. --> <p id="pageIntroductionText">This content is provided by the MFA sample adapter. Challenge inputs should be presented below.</p> <label for="challengeQuestionInput" class="block">Question text</label> <input id="challengeQuestionInput" name="ChallengeQuestionAnswer" type="text" value="" class="text" placeholder="Answer placeholder" /> <div id="submissionArea" class="submitMargin"> <input id="submitButton" type="submit" name="Submit" value="Submit" onclick="return AuthPage.submitAnswer()"/> </div> </form> <div id="intro" class="groupMargin"> <p id="supportEmail">Support information</p> </div> <script type="text/javascript" language="JavaScript"> //<![CDATA[ function AuthPage() { } AuthPage.submitAnswer = function () { return true; }; //]]> </script> </div>Selecteer vervolgens het bestand > en geef het de naam Resources en klik op Toevoegen:
Kies vervolgens in het bestand Resources.resx de optie Resource toevoegen... Voeg een bestaand bestand toe. Navigeer naar het tekstbestand (met het HTML-fragment) dat u hierboven hebt opgeslagen.
Zorg ervoor dat de GetFormHtml-code de naam van de nieuwe resource correct oplost door het naamvoorvoegsel van het resourcebestand (.resx-bestand), gevolgd door de naam van de resource zelf:
public string GetFormHtml(int lcid) { string htmlTemplate = Resources.MfaFormHtml; //Resxfilename.resourcename return htmlTemplate; }
U moet nu kunnen bouwen.
De adapter bouwen
De adapter moet worden ingebouwd in een sterk benoemde .NET-assembly die kan worden geïnstalleerd in de GAC in Windows. Voer de volgende stappen uit om dit te bereiken in een Visual Studio-project:
Klik met de rechtermuisknop op de projectnaam in Solution Explorer en klik op Eigenschappen.
Schakel op het tabblad Ondertekeningde assembly ondertekenen in en kies <Nieuw...> onder Kies een sterk naamsleutelbestand: Voer een sleutelbestandsnaam en wachtwoord in en klik op OK. Controleer vervolgens of De assembly ondertekenen is ingeschakeld en Alleen vertraging ondertekenen is uitgeschakeld. De pagina Voor het ondertekenen van eigenschappen moet er als volgt uitzien:
Bouw vervolgens de oplossing.
De adapter implementeren op uw AD FS-testmachine
Voordat een externe provider kan worden aangeroepen door AD FS, moet deze worden geregistreerd in het systeem. Adapterproviders moeten een installatieprogramma bieden dat de benodigde installatieacties uitvoert, inclusief installatie in de GAC, en het installatieprogramma moet registratie in AD FS ondersteunen. Als dat niet is gebeurd, moet de beheerder de onderstaande Windows PowerShell-stappen uitvoeren. Deze stappen kunnen in het lab worden gebruikt om testen en foutopsporing in te schakelen.
De AD FS-testmachine voorbereiden
Kopieer bestanden en voeg ze toe aan GAC.
Zorg ervoor dat u een Windows Server 2012 R2-computer of virtuele machine hebt.
Installeer de AD FS-functieservice en configureer een farm met ten minste één knooppunt.
Zie de Implementatiehandleiding voor Windows Server 2012 R2 AD FS voor gedetailleerde stappen voor het instellen van een federatieserver in een testomgeving.
Kopieer de Gacutil.exe-hulpprogramma's naar de server.
Gacutil.exe vindt u in %homedrive%Program Files (x86)Microsoft SDK'sWindowsv8.0AbinNETFX 4.0 Tools op een Windows 8-computer. U hebt het gacutil.exe-bestand zelf en de locatie 1033, en-USen de andere gelokaliseerde resourcemap nodig onder de locatie VAN NETFX 4.0 Tools .
Kopieer uw providerbestand(en) (een of meer sterke naam die is ondertekend .dll bestanden) naar dezelfde maplocatie als gacutil.exe (de locatie is voor het gemak)
Voeg uw .dll bestand(en) toe aan de GAC op elke AD FS-federatieserver in de farm:
Voorbeeld: het opdrachtregelprogramma GACutil.exe gebruiken om een dll toe te voegen aan de GAC:
C:>.gacutil.exe /if .<yourdllname>.dllDe resulterende vermelding in de GAC weergeven:
C:>.gacutil.exe /l <yourassemblyname>
Uw provider registreren in AD FS
Zodra aan de bovenstaande vereisten is voldaan, opent u een Windows PowerShell-opdrachtvenster op uw federatieserver en voert u de volgende opdrachten in (houd er rekening mee dat als u federatieserverfarm gebruikt die gebruikmaakt van Windows Interne database, u deze opdrachten moet uitvoeren op de primaire federatieserver van de farm):
Register-AdfsAuthenticationProvider –TypeName YourTypeName –Name “AnyNameYouWish” [–ConfigurationFilePath (optional)]Waar YourTypeName uw .NET sterke typennaam is: "YourDefaultNamespace.YourIAuthenticationAdapterImplementationClassName, YourAssemblyName, Version=YourAssemblyVersion, Culture=neutral, PublicKeyToken=YourPublicKeyTokenValue, processorArchitecture=MSIL"
Hiermee registreert u uw externe provider in AD FS, met de naam die u hebt opgegeven als AnyNameYouWish hierboven.
Start de AD FS-service opnieuw op (bijvoorbeeld met behulp van de Windows Services-module).
Voer de volgende opdracht uit:
Get-AdfsAuthenticationProvider.Dit toont uw provider als een van de providers in het systeem.
Example:
$typeName = "MFAadapter.MyAdapter, MFAadapter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e675eb33c62805a0, processorArchitecture=MSIL” Register-AdfsAuthenticationProvider -TypeName $typeName -Name “MyMFAAdapter” net stop adfssrv net start adfssrvAls de apparaatregistratieservice is ingeschakeld in uw AD FS-omgeving, voert u ook de volgende PowerShell-opdracht uit:
net start drsGebruik de volgende PowerShell-opdracht om de geregistreerde provider te verifiëren:
Get-AdfsAuthenticationProviderDit toont uw provider als een van de providers in het systeem.
Het AD FS-verificatiebeleid maken dat uw adapter aanroept
Maak het verificatiebeleid met behulp van de AD FS-beheerconsole
Open de module AD FS-beheer (vanuit het menu Hulpprogramma's voor serverbeheer).
Klik op Verificatiebeleid.
Klik in het middelste deelvenster onder Multi-Factor Authentication op de koppeling Bewerken rechts van globale instellingen.
Onder Aanvullende verificatiemethoden selecteren onderaan de pagina, vinkt u het selectievakje aan voor de AdminName van uw provider. Klik op Toepassen.
Als u een 'trigger' wilt opgeven om MFA aan te roepen met behulp van uw adapter, controleert u onder Locaties bijvoorbeeld zowel Extranet als Intranet. Klik op OK. (Zie 'Het verificatiebeleid maken met Windows PowerShell' hieronder om triggers per relying party te configureren.)
Controleer de resultaten met behulp van de volgende opdrachten:
Eerste gebruik
Get-AdfsGlobalAuthenticationPolicy. Als het goed is, ziet u de naam van uw provider als een van de waarden van AdditionalAuthenticationProvider.Gebruik vervolgens
Get-AdfsAdditionalAuthenticationRule. U ziet nu de regels voor extranet en intranet die zijn geconfigureerd als gevolg van uw beleidsselectie in de gebruikersinterface van de beheerder.
Het verificatiebeleid maken met Windows PowerShell
Schakel eerst de provider in in het globale beleid:
Set-AdfsGlobalAuthenticationPolicy -AdditionalAuthenticationProvider “YourAuthProviderName”`Note
Houd er rekening mee dat de waarde die is opgegeven voor de parameter AdditionalAuthenticationProvider overeenkomt met de waarde die u hebt opgegeven voor de parameter Name in de bovenstaande Register-AdfsAuthenticationProvider-cmdlet en met de eigenschap Name van Get-AdfsAuthenticationProvider cmdlet-uitvoer.
Set-AdfsGlobalAuthenticationPolicy –AdditionalAuthenticationProvider “MyMFAAdapter”`Configureer vervolgens globale of vertrouwende partij-specifieke regels om MFA te activeren.
Voorbeeld 1: om een globale regel te maken waarvoor MFA is vereist voor externe aanvragen:
Set-AdfsAdditionalAuthenticationRule –AdditionalAuthenticationRules 'c:[type == "http://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork", value == "false"] => issue(type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod", value = "http://schemas.microsoft.com/claims/multipleauthn" );'Voorbeeld 2: om MFA-regels te maken die MFA vereisen voor externe aanvragen aan een specifieke vertrouwende partij. (Opmerking: afzonderlijke providers kunnen niet worden verbonden met afzonderlijke relying party's in AD FS in Windows Server 2012 R2).
$rp = Get-AdfsRelyingPartyTrust –Name <Relying Party Name> Set-AdfsRelyingPartyTrust –TargetRelyingParty $rp –AdditionalAuthenticationRules 'c:[type == "http://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork", value == "false"] => issue(type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod", value = "http://schemas.microsoft.com/claims/multipleauthn" );'
Verifiëren met MFA met behulp van uw adapter
Voer ten slotte de onderstaande stappen uit om uw adapter te testen:
Zorg ervoor dat het globale primaire verificatietype van AD FS is geconfigureerd als formulierverificatie voor zowel extranet als intranet (dit maakt uw demo eenvoudiger te verifiëren als een specifieke gebruiker)
Klik in de AD FS-module, onder Verificatiebeleid, in het gebied Primaire verificatie op Bewerken naast algemene instellingen.
- Of klik op het tabblad Primair in de gebruikersinterface van het beleid voor meerdere factoren .
Zorg ervoor dat formulierverificatie de enige optie is die is ingeschakeld voor zowel het Extranet als de intranetverificatiemethode. Klik op OK.
Open de html-pagina met door IDP geïnitieerde aanmelding (https://< fsname>/adfs/ls/idpinitiatedsignon.htm) en meld u aan als een geldige AD-gebruiker in uw testomgeving.
Voer referenties in voor primaire verificatie.
Je zou de pagina MFA-formulieren met voorbeeldvragen voor uitdagingen moeten zien verschijnen.
Als u meer dan één adapter hebt geconfigureerd, ziet u de MFA-keuzepagina met uw eerder genoemde beschrijvende naam.
U hebt nu een werkende implementatie van de interface en u hebt de kennis van hoe het model werkt. U kunt het proberen als extra voorbeeld om onderbrekingspunten in te stellen in de BeginAuthentication en TryEndAuthentication. U ziet hoe BeginAuthentication wordt uitgevoerd wanneer de gebruiker voor het eerst het MFA-formulier invoert, terwijl TryEndAuthentication wordt geactiveerd bij elke submit of the form.
De adapter bijwerken voor geslaagde verificatie
Houd er rekening mee dat uw voorbeeldadapter nooit succesvol zal worden geauthenticeerd! Dit komt doordat niets in uw code null retourneert voor TryEndAuthentication.
Door de bovenstaande procedures uit te voeren, hebt u een basisadapter-implementatie gemaakt en toegevoegd aan een AD FS-server. U kunt de pagina MFA-formulieren ophalen, maar u kunt nog niet worden geverifieerd omdat u de juiste logica nog niet hebt geplaatst in uw TryEndAuthentication-implementatie. Laten we dat dus toevoegen.
Herinner je jouw TryEndAuthentication-implementatie:
public IAdapterPresentation TryEndAuthentication(IAuthenticationContext authContext, IProofData proofData, HttpListenerRequest request, out Claim[] outgoingClaims)
{
//return new instance of IAdapterPresentationForm derived class
outgoingClaims = new Claim[0];
return new MyPresentationForm();
}
We gaan het bijwerken zodat myPresentationForm() niet altijd wordt geretourneerd. Hiervoor kunt u één eenvoudige hulpprogrammamethode in uw klasse maken:
static bool ValidateProofData(IProofData proofData, IAuthenticationContext authContext)
{
if (proofData == null || proofData.Properties == null || !proofData.Properties.ContainsKey("ChallengeQuestionAnswer"))
{
throw new ExternalAuthenticationException("Error - no answer found", authContext);
}
if ((string)proofData.Properties["ChallengeQuestionAnswer"] == "adfabric")
{
return true;
}
else
{
return false;
}
}
Werk vervolgens TryEndAuthentication bij zoals hieronder:
public IAdapterPresentation TryEndAuthentication(IAuthenticationContext authContext, IProofData proofData, HttpListenerRequest request, out Claim[] outgoingClaims)
{
outgoingClaims = new Claim[0];
if (ValidateProofData(proofData, authContext))
{
//authn complete - return authn method
outgoingClaims = new[]
{
// Return the required authentication method claim, indicating the particulate authentication method used.
new Claim( "http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod", "http://example.com/myauthenticationmethod1" )
};
return null;
}
else
{
//authentication not complete - return new instance of IAdapterPresentationForm derived class
return new MyPresentationForm();
}
}
Nu moet u de adapter in het testvak bijwerken. U moet eerst het AD FS-beleid ongedaan maken, vervolgens de registratie bij AD FS ongedaan maken en AD FS opnieuw opstarten, vervolgens de .dll verwijderen uit de GAC, vervolgens de nieuwe .dll toevoegen aan de GAC, het vervolgens registreren bij AD FS, AD FS opnieuw opstarten en het AD FS-beleid herconfigureren.
De bijgewerkte adapter implementeren en configureren op uw AD FS-testcomputer
AD FS-beleid wissen
Schakel alle MFA-gerelateerde selectievakjes uit in de MFA-gebruikersinterface, die hieronder worden weergegeven en klik op OK.
Registratieprovider ongedaan maken (Windows PowerShell)
PS C:> Unregister-AdfsAuthenticationProvider –Name “YourAuthProviderName”
Voorbeeld:PS C:> Unregister-AdfsAuthenticationProvider –Name “MyMFAAdapter”
De waarde die u doorgeeft voor 'Naam' is dezelfde waarde als 'Naam' die u hebt opgegeven voor de Register-AdfsAuthenticationProvider-cmdlet. Het is ook de eigenschap 'Name' die wordt uitgevoerd door Get-AdfsAuthenticationProvider.
Voordat u de registratie van een provider ongedaan maakt, moet u de provider verwijderen uit de AdfsGlobalAuthenticationPolicy (door de selectievakjes uit te schakelen die u hebt ingeschakeld in de AD FS-beheermodule of met behulp van Windows PowerShell.)
De AD FS-service moet opnieuw worden opgestart na deze bewerking.
Assembly verwijderen uit GAC
Gebruik eerst de volgende opdracht om de volledig gekwalificeerde sterke naam van de vermelding te vinden:
C:>.gacutil.exe /l <yourAdapterAssemblyName>Voorbeeld:
C:>.gacutil.exe /l mfaadapterGebruik vervolgens de volgende opdracht om deze uit de GAC te verwijderen:
.gacutil /u “<output from the above command>”Voorbeeld:
C:>.gacutil /u “mfaadapter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e675eb33c62805a0, processorArchitecture=MSIL”
De bijgewerkte assembly toevoegen aan GAC
Zorg ervoor dat u de bijgewerkte .dll eerst lokaal plakt. C:>.gacutil.exe /if .MFAAdapter.dll
Assembly weergeven in de GAC (cmd-lijn)
C:> .gacutil.exe /l mfaadapter
Uw provider registreren in AD FS
PS C:>$typeName = "MFAadapter.MyAdapter, MFAadapter, Version=1.0.0.1, Culture=neutral, PublicKeyToken=e675eb33c62805a0, processorArchitecture=MSIL”PS C:>Register-AdfsAuthenticationProvider -TypeName $typeName -Name “MyMFAAdapter1”Start de AD FS-service opnieuw op.
Maak het verificatiebeleid met behulp van de AD FS-beheerconsole
Open de module AD FS-beheer (vanuit het menu Hulpprogramma's voor serverbeheer).
Klik op Verificatiebeleid.
Klik onder Multi-Factor Authentication op de koppeling Bewerken rechts van algemene instellingen.
Schakel onder Extra verificatiemethoden selecteren het selectievakje in voor de adminname van uw provider. Klik op Toepassen.
Als u een 'trigger' wilt opgeven om MFA aan te roepen met behulp van uw adapter, controleert u onder Locaties bijvoorbeeld zowel Extranet als Intranet. Klik op OK.
Verifiëren met MFA met behulp van uw adapter
Voer ten slotte de onderstaande stappen uit om uw adapter te testen:
Zorg ervoor dat het globale primaire verificatietype van AD FS is geconfigureerd als formulierverificatie voor zowel extranet als intranet (dit maakt het eenvoudiger om te verifiëren als een specifieke gebruiker).
Klik in de module AD FS-beheer, onder Verificatiebeleid, in het gebied Primaire verificatie op Bewerken naast Algemene instellingen.
- Of klik op het tabblad Primair in de gebruikersinterface van het beleid voor meerdere factoren.
Zorg ervoor dat formulierverificatie de enige optie is die is ingeschakeld voor zowel het Extranet als de intranetverificatiemethode . Klik op OK.
Open de html-pagina met door IDP geïnitieerde aanmelding (https://< fsname>/adfs/ls/idpinitiatedsignon.htm) en meld u aan als een geldige AD-gebruiker in uw testomgeving.
Voer de referenties voor primaire verificatie in.
U ziet de MFA-formulierenpagina verschijnen met voorbeeld uitdagende tekst.
- Als u meer dan één adapter hebt geconfigureerd, ziet u de MFA-keuzepagina met uw vriendelijke naam.
Als het goed is, ziet u een geslaagde aanmelding wanneer u adfabric invoert op de pagina MFA-verificatie.
Zie ook
Andere resources
Aanvullende verificatiemethoden
Risico's beheren met aanvullende Multi-Factor Authentication voor gevoelige toepassingen