1

J'ai configuré un IdentityServer de base opérationnel. J'utilise Identity Manager et Identity Admin pour conserver tout (utilisateur, rôles, revendications, clients, étendues) dans une base de données. La prochaine étape consiste à intégrer l'authentification avec AD. Mes exigences sont les suivantes:IdentityServer - AD pour l'authentification et le reste dans la base de données

  • utilisateur sera authentifié contre AD
  • autorisations de l'utilisateur (réclamations/rôles) seront stockés dans la base de données (comme ils sont maintenant)
  • En fonction de l'application cliente, j'ai trois différents Scénarios:
    • Dans certains cas, l'identité de l'utilisateur actuel doit être utilisée (je suppose que pour que cela fonctionne, Identity Server devrait fonctionner avec l'authentification Windows). L'utilisateur ne devrait être invité à rien.
    • Dans certains cas, l'utilisateur doit se connecter explicitement. Il peut utiliser le login actuel ou
    • Entrez manuellement un nom d'utilisateur et un mot de passe qui seront validés contre AD.

Je cherche quelques conseils/direction comment procéder. Dois-je gérer complètement la séquence de connexion moi-même, y a-t-il quelque chose de similaire que je puisse faire reposer sur ma solution, etc.

Toute aide est appréciée.

+0

Je ne comprends pas ce que vous entendez par « il peut utiliser le login en cours » – stombeur

+0

@stombeur Tout utilisateur sera connecté à Windows avec un login AD et je veux utiliser ce login. – Albert

+0

ok, j'ai nettoyé ma réponse un peu pour le rendre plus clair – stombeur

Répondre

1

Après quelques recherches autour de:

This example à idsrv montre comment exécuter Windows AuthN dans une application Web distincte et comment utiliser ws-alimentés de déléguer à cette application Web. Ceci est également expliqué dans this issue.

This blog post by scott brady montre comment configurer adfs pour permettre idsrv en tant que partie de confiance et déléguer ADFS avec ws alimenté pour permettre nom d'utilisateur/mot de passe connexion sur adfs

Si vous utilisez ces deux délégations ws nourris, faire Assurez-vous d'utiliser des valeurs différentes pour authenticationtype. Ce que vous pouvez faire est de forcer l'utilisateur à essayer winauth en premier, en ajoutant acr_values ​​et idp à votre première redirection et en définissant idp au nom de l'idp externe winauth. Si cela échoue, vous pouvez utiliser this technique pour détecter l'échec de connexion du fournisseur winauth externe et rediriger automatiquement vers le fournisseur adfs. Si, pour une raison quelconque, vous atteignez la page de connexion, vous pouvez disable local login (ne pas afficher les champs de saisie nom d'utilisateur/mot de passe) et les fournisseurs externes (winauth et adfs) s'afficheront par défaut en tant que boutons.


modifier:

oui, vous devez ajouter une application web supplémentaire à côté de idsrv, qui évite d'avoir à exécuter idsrv avec authentification intégrée de Windows

le flux de l'utilisateur avec winauth serait

client app -> IdSrv (login page) -> WinAuthHost -> IdSrv (auth endpoint)-> client app 

en fait, en cas de succès, l'utilisateur serait très probablement voir que l'application cliente et un écran dans le WinauthHost et ne jamais voir Idsrv

Si l'utilisateur n'est pas connecté à Windows (ou non le domaine correct), le débit serait comme ce

client app -> IdSrv (login page) -> WinAuthHost -> IdSrv login (auth endpoint, fails) 
-> ADFS -> IdSrv login (auth endpoint) -> client app 
+0

J'ai effectivement utilisé la plupart de ceux-ci sauf le WinIDH externe idp et l'auto-redirection sur l'échec, mais les exemples semblent légitimes – stombeur

+0

merci. Ce sont utiles, mais je ne suis toujours pas clair sur le flux global. Ma compréhension est que je vais devoir créer une autre application web qui fonctionne en utilisant Windows auth et qui hébergera le composant IdSrv WinAuth (appelons-le WinAuthHost). Pour l'utilisateur final, le flux sera: application client -> connexion IdSrv -> WinAuthHost -> ADFS -> WinAuthHost -> IdSrv -> application client. Est-ce exact? – Albert

+0

En outre, je ne suis pas sûr de savoir ce que vous entendez par "Si cela échoue, vous pouvez utiliser cette technique pour détecter l'échec de connexion du fournisseur Winauth externe et de rediriger vers le fournisseur adfs automatiquement."? Je veux que l'utilisateur se connecte seulement en utilisant AD ... s'il échoue l'utilisateur ne devrait pas se connecter. Pouvez-vous clarifier s'il vous plaît? – Albert