Comment authentifier l'utilisateur avec Azure Active Directory à l'aide de l'authentification OAuth 2.0?
J'ai une API REST écrit en C# et j'ai besoin de s'authentifier avec un existant Azure AD service. J'ai actuellement le nom d'utilisateur et le mot de passe de l'utilisateur qui souhaite s'authentifier. J'ai besoin de s'authentifier avec Azure AD et recevoir un jeton d'accès à partir du serveur.
Quelqu'un peut-il svp m'indiquer la direction de certains articles/tutoriels qui expliquent comment faire?
Vous dire comment utiliser OAuth 2.0 avec Azure AD? La call-by-call processus est décrit ici. Le Azure AD Bibliothèque d'Authentification simplifie ce processus
Merci - c'est exactement ce dont j'avais besoin
Le fait que vous mentionnez avoir les informations d'identification des utilisateurs qui me rend nerveux. Pourriez-vous ajouter un peu plus de détails à votre question. Est le scénario: native app -> votre API REST -> Azure AD API Rest. Ou est-il: Web App -> votre API REST -> Azure AD API Rest. Ou quelque chose d'autre. Selon le scénario exact, je peux vous les échantillons, ce qui vous empêchera de jamais avoir besoin de manipuler les informations d'identification des utilisateurs, ce qui serait beaucoup plus sûr d'un point de vue sécurité.
Merci - c'est exactement ce dont j'avais besoin
Le fait que vous mentionnez avoir les informations d'identification des utilisateurs qui me rend nerveux. Pourriez-vous ajouter un peu plus de détails à votre question. Est le scénario: native app -> votre API REST -> Azure AD API Rest. Ou est-il: Web App -> votre API REST -> Azure AD API Rest. Ou quelque chose d'autre. Selon le scénario exact, je peux vous les échantillons, ce qui vous empêchera de jamais avoir besoin de manipuler les informations d'identification des utilisateurs, ce qui serait beaucoup plus sûr d'un point de vue sécurité.
OriginalL'auteur COBOL | 2015-02-18
Vous devez vous connecter pour publier un commentaire.
Vous devriez éviter de manipuler les informations d'identification des utilisateurs. Il y a de graves répercussions sur la sécurité lors de la collecte d'une informations d'identification des utilisateurs qui sont atténués en utilisant OAuth 2.0 ou OpenID Connect pour obtenir un jeton sans contact les informations d'identification. Aussi, si vous avez vos propres informations d'identification de la collection de l'INTERFACE utilisateur, vous pouvez trouver le signe de l'échec dans l'avenir, si l'authentification multi-facteurs est allumé. Dans ce cas, plus d'informations peuvent être nécessaires pour authentifier l'utilisateur que vous collectez, un mot de passe par exemple. Si vous permettez à Azure AD pour présenter l'expérience de l'authentification via OAuth 2.0 ou OpenID Connect, alors vous êtes isolé à partir de la méthode d'authentification utilisé. Collecte les utilisateurs d'Azure AD informations d'identification est une mauvaise pratique à éviter si possible.
Je n'ai pas assez de détails sur le scénario exact pour être sûr que l'exemple suivant s'applique, mais il aura au moins fournir un bon point de départ. Cet exemple montre comment créer une application native qui appelle une API REST qui peut ensuite appeler l'Azur des ressources de la manière la plus sûre possible.
https://github.com/AzureADSamples/WebAPI-OnBehalfOf-DotNet
Vous pouvez trouver beaucoup d'autres échantillons ici qui peut être utilisé pour construire une solution pour votre scénario spécifique.
https://github.com/AzureADSamples
Si vous fournir plus de détails, je peux donner des conseils plus précis.
S'il vous plaît éviter de transporter le nom d'utilisateur et mot de passe. Partout où vous manipulez le nom d'utilisateur et le mot de passe est un autre endroit potentiel pour le compte de l'utilisateur à faire des compromis. Les jetons retourné à partir de AAD sont limitées à un champ particulier. Si l'un de ces jetons est compromis la gravité de l'attaque est considérablement inférieur à celui d'un compromis nom d'utilisateur mot de passe. Pourquoi êtes-vous de la collecte que le nom d'utilisateur mot de passe directement? Cela peut-il être changé?
Il y a sur la conformité des situations où les applications ont besoin pour valider les informations d'identification dans l'application pour une demande. Il n'y a aucun moyen de contourner cela, sans acquérir de creds à partir de l'application client puis de valider avec Azure sur le serveur (C# en application cliente).
J'aimerais mieux comprendre votre situation de conformité. L'obtention d'un jeton de DAA implique que les informations d'identification valides.
Grands points à ne pas transporter des informations d'identification d'utilisateur dans votre application. Merci @RichRandall
OriginalL'auteur Rich Randall
Voir: http://www.cloudidentity.com/blog/2014/07/08/using-adal-net-to-authenticate-users-via-usernamepassword/
Résumé:
Créer un UserCredential
Appeler l'un de l'AcquireToken() fonctionne avec le UserCredential
L'ID de l'Application de l'URI de l'API web (ressource sécurisée). Pour trouver l'ID de l'Application de l'URI de l'API web, dans le Portail de Gestion Azure, cliquez sur Active Directory, cliquez sur le répertoire, cliquez sur l'application, puis cliquez sur Configurer. azure.microsoft.com/en-us/documentation/articles/...
De même l'article: Vous ne pouvez utiliser ces flux à partir d'un maternelle client. Un client confidentiel, comme un site web, ne peut pas utiliser directement les informations d'identification utilisateur.
Si vous regardez la accepté de répondre à cette question: stackoverflow.com/questions/40498384/... vous voyez comment vous pouvez construire une CRUE de la requête POST à l'utilisation des identifiants de l'utilisateur pour obtenir un jeton. Cela fonctionne partout où vous pouvez créer un objet HttpClient pour en faire la demande...
OriginalL'auteur dteviot