Active Directory Federation Services

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • bertuske
  • Registratie: December 2011
  • Laatst online: 29-04-2016
Ik ben bezig met configureren/ontwikkelen van een webapplicatie in .Net.
Deze applicatie wordt voor één klant(bedrijf) toegankelijk via ADFS, en voor andere bedrijven te benaderen via standaard login procedure.

Het gevolg is dat wanneer de webapplicatie benaderd wordt buiten het domein van die klant, ADFS van die klant het inlogscherm toont van ADFS.
Dit houdt in dat andere gebruikers van andere bedrijven ook ge-redirect worden naar het ADFS inlogscherm.

Graag zou ik het zo bouwen/configureren, dat het inlogscherm van ADFS niet getoond wordt, maar dat wanneer buiten het domein de webapplicatie wordt benaderd, de gewone inlogprocedure gevolgd moet worden.

Heeft hier iemand ervaring mee?

Groeten,

Robert van der Doelen

Acties:
  • 0 Henk 'm!

  • Umbrah
  • Registratie: Mei 2006
  • Laatst online: 00:12

Umbrah

The Incredible MapMan

Welk protocol probeer je te implementeren? Er is nogal een verschil tussen SAML en OAuth. Ergens zit je dus op een punt dat je een app probeert te bouwen die kan praten met een authenticatie service. Prima. Ergens zul je je applicatie binnen ADFS moeten registreren, zodat er een certificaat/secret gekoppeld is aan de applicatie, 'relaying party trust' is waar je naar moet zoeken, en dit dient in die klant haar AD-FS geconfigureerd te zijn. Je zult een relay-state URL moeten genereren voor een SAML-endpoint, als je daar voor kiest, en je aanmeld scherm moeten aanpassen dat het 'slim' is.

Microsoft werkt vrij basaal op die manier met een stuk jquery in Office365. Als iemand naar outlook.office365.com gaat, krijg je heel basaal wat jij wilt: een gebruikersnaam, en een wachtwoord. Zodra je echter een domein intikt achter je aanmeldprompt (ik@blablabla.com ipv ik@outlook.com bijvoorbeeld), verschijnt er nog vóór je een wachtwoord in kan tikken een melding: "redirecting you to your organisation signin" -- vanaf waar de SAML procedure doorlopen wordt. Simpel, en elegant: en afhankelijk van je token expiration kun je zelfs een 'sessie' bewaren.

Acties:
  • 0 Henk 'm!

  • bertuske
  • Registratie: December 2011
  • Laatst online: 29-04-2016
Ik weet niet direct of dit SAML is of OAuth. Misschien verheldert onderstaande dit.

Ik heb via de tool FedUtil.exe de FederationMetadataLocation van de STS benaderd. (Bij de STS is alles goed ingesteld, ook de relying party is toegevoegd)

Dan worden de benodigde Web.config aanpassingen automatisch gedaan. Vervolgens kan ik de claims uitlezen via onderstaand stukje code:

============================================================================
string action = this.Request.QueryString[WSFederationConstants.Parameters.Action] ?? string.Empty;
var claimsPrincipal = Thread.CurrentPrincipal as ClaimsPrincipal;
if (claimsPrincipal != null && User.Identity.IsAuthenticated)
{
signedIn.Text = "You are signed in.";
lblAction.Text = string.Format("Action: '{0}'",action);
var sb = new StringBuilder();

foreach (var claim in claimsPrincipal.Identities.FirstOrDefault().Claims)
{
sb.Append(claim.Issuer);
sb.Append(" ");
sb.Append(claim.ClaimType);
sb.Append(" ");
sb.Append(claim.Value);
sb.Append(" ");
sb.Append(claim.ValueType);
sb.Append("<br />");
}
claimType.Text = sb.ToString();

}
else
{
signedIn.Text = "You are not signed in.";
}
============================================================================
De claims komen hiermee ook netjes terug en ik kan bv het e-mailadres uitlezen.

Dus ergens bij de STS moet een "relay-state url" aangemaakt worden, is dit de url waarnaartoe wordt geredirect na authenticatie via ADFS?

Acties:
  • 0 Henk 'm!

  • Meekoh
  • Registratie: April 2005
  • Laatst online: 17:11
Als ik het goed begrijp, beheer jij de ADFS server niet toch? Dat doet Klant A.
Klant B benaderd jou webapp via het Internet en krijgt een redirect naar de ADFS van klant A.
Het proces loopt als het goed is alsvolgt.
User gaat naar de URL van jou webapp, de webapp ziet dat je niet authenticated bent en relayed je naar ADFS. ADFS doet authenticatie en geeft jou een claim. De Webapp doet vervolgens iets met die claim en je bent ingelogd.
Wat jij aan de het begin zou moeten doen is op basis van afkomst (IP adres?) bepalen of je iemand naar ADFS wilt sturen. OF alle andere klanten ook een ADFS server laten neerzetten.

edit: denk dat je zoiets zoekt.

edit 2: Of, wellicht een beter idee. Je implementeert zelf ook een ADFS voor de klanten die dat niet willen. Iedereen zal dus daar op uitkomen voor authentication. Vervolgens maak je tussen de web app en je ADFS server een relying party trust. Tevens maak je een relying party trust vanuit je ADFS server naar die van Klant A, zodat jou ADFS server contact opneemt met die van Klant A voor authenticatie. In dat geval wisselt jou ADFS server tussen de rollen van RP-STS (Relying Party) en IP-STS (Identity Provider), Voor Klant A ben je de RP en voor Klant B en de rest de IP.

Edit 3: Laatste edit O-)
Waar Umbrah op doelt bij Office 365 heet Homerealm Discovery. Zit ook standaard in ADFS 2.0.
Microsoft gebruikt namelijk voor O365 gewoon ADFS.

[ Voor 43% gewijzigd door Meekoh op 10-04-2015 14:36 ]

Computer says no