J'ai récemment posé une question similaire, mais c'était avec AAD B2C en ce qui concerne. Maintenant, je me demande comment ajouter correctement les politiques à l'authentification Azure Active Directory dans mon application. À l'heure actuelle, ma classe de démarrage ressemble à ceci:Ajout des stratégies d'Azure AD au démarrage après la migration d'Auth 2.0
namespace Auth
{
public class Startup
{
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
private IConfigurationRoot Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(opts =>
{
opts.Filters.Add(typeof(AdalTokenAcquisitionExceptionFilter));
});
services.AddAuthorization(o =>
{
});
services.AddAuthentication(auth =>
{
auth.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
auth.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
auth.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(opts =>
{
Configuration.GetSection("Authentication").Bind(opts);
opts.Events = new OpenIdConnectEvents
{
OnAuthorizationCodeReceived = async ctx =>
{
HttpRequest request = ctx.HttpContext.Request;
string currentUri = UriHelper.BuildAbsolute(request.Scheme, request.Host, request.PathBase, request.Path);
var credential = new ClientCredential(ctx.Options.ClientId, ctx.Options.ClientSecret);
IDistributedCache distributedCache = ctx.HttpContext.RequestServices.GetRequiredService<IDistributedCache>();
string userId = ctx.Principal.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
var cache = new AdalDistributedTokenCache(distributedCache, userId);
var authContext = new AuthenticationContext(ctx.Options.Authority, cache);
AuthenticationResult result = await authContext.AcquireTokenByAuthorizationCodeAsync(
ctx.ProtocolMessage.Code, new Uri(currentUri), credential, ctx.Options.Resource);
ctx.HandleCodeRedemption(result.AccessToken, result.IdToken);
}
};
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseAuthentication();
app.UseMvcWithDefaultRoute();
}
}
}
je parviens à acquérir tous les jetons nécessaires (pour Azure graphique) avec succès plus tard, mais en ce moment l'application utilise une sorte de stratégie par défaut de Microsoft et je suis obligé de utiliser l'authentification Microsoft, alors que je voudrais également authentifier les utilisateurs locataires locaux. J'ai une politique d'inscription chez mon locataire appelée B2C_1_SignInPolicy, mais je n'arrive pas à comprendre comment la transmettre à l'authentification de mon application. App utilise un modèle de type MVC et .Net Core 2.0.
Ma meilleure estimation a été l'ajout d'une ligne semblable à opts.AddPolicyUrl (» https://...policyName). Mais je ne peux pas trouver un moyen de le faire
pouvez-vous préciser ce que vous essayez d'atteindre précisément,.? quand vous dites locataire local utilisateurs voulez-vous dire que vous voulez vous connecter aux utilisateurs à partir d'un locataire Azure AD spécifique ou d'un magasin de comptes local? –
Comptes locaux d'un locataire Azure AD - ceux créés via le schéma Créer un compte utilisateur (compte local) à partir de [ici] (https://msdn.microsoft.com/fr-fr/library/azure/ad/graph/api/users -opérations) –