Je suis assez nouveau dans Azure AD Graph et le processus d'authentification. J'ai été en mesure d'incorporer un seul signe sur l'utilisation du client Azure AD Graph comme dans cet exemple en utilisant une application .NET MVC: https://github.com/Azure-Samples/active-directory-dotnet-graphapi-webObtenir le jeton de graphisme Azure AD si déjà authentifié
Mon dilemme est que même si j'ai authentifié ma session, il demande toujours que Je me connecte à nouveau pour effectuer les actions trouvées dans le contrôleur ci-dessous:
public ActionResult Test()
{
if (Request.QueryString["reauth"] == "True")
{
//Send an OpenID Connect sign -in request to get a new set of tokens.
// If the user still has a valid session with Azure AD, they will not be prompted for their credentials.
// The OpenID Connect middleware will return to this controller after the sign-in response has been handled.
HttpContext.GetOwinContext()
.Authentication.Challenge(OpenIdConnectAuthenticationDefaults.AuthenticationType);
}
// Access the Azure Active Directory Graph Client
ActiveDirectoryClient client = AuthenticationHelper.GetActiveDirectoryClient();
// Obtain the current user's AD objectId
string userObjectID = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
// Query and obtain the current user object from the Azure AD Graph Client
User user = (User)client.Users.
Where(u => u.ObjectId
.Equals(userObjectID, StringComparison.CurrentCultureIgnoreCase)).
ExecuteSingleAsync().
Result;
// Get the employee Id from Azure AD (via a directory extension)
IReadOnlyDictionary<string, object> extendedProperty = user.GetExtendedProperties();
object extendedProp = extendedProperty["extension_ExtensionId_employeeID"];
// Hash the employee Id
var empId = PasswordHash.ArgonHashString(extendedProp.ToString(), PasswordHash.StrengthArgon.Moderate);
// Send to the view for testing only
ViewBag.EmployeeName = user.DisplayName;
ViewBag.EmployeeEmail = user.Mail;
ViewBag.EmployeeId = empId;
return View();
}
l'erreur que je reçois est:
erreur du serveur dans «/» application autorisation requise
Avec les lignes suivantes de code dans la boîte jaune:
Line 22: if (token == null || token.IsEmpty())
Line 23: {
Line 24: throw new Exception("Authorization Required.");
Line 25: }
Line 26: return token;
Depuis que je suis assez nouveau à la pièce d'authentification, je besoin d'un peu d'indications sur la façon à obtenir la session en cours jeton donc je ne suis pas cette erreur. J'utilise Azure AD Graph parce que j'obtiens une extension de répertoire spécifique dans Azure que je n'ai pas pu obtenir via Microsoft Graph (pour l'instant et en fonction de la date limite actuelle).
Tout conseil vous sera utile.
Merci pour le conseil! J'ai fini par le faire à la fin de la journée de travail et j'ai demandé aux utilisateurs de rediriger pour réautoriser l'application à nouveau. J'ai réalisé qu'il y a deux choses qui se passent - l'authentification unique authentifie l'utilisateur alors que la requête LINQ demande une autorisation spécifique à l'API de graphe Azure AD. Je l'ai interprété de manière à ce que l'authentification fournisse un accès à l'application, mais la pièce d'autorisation donne des autorisations déléguées spécifiques à une ressource spécifique. –