// This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { GraphClientConfiguration graphClientConfiguration = new GraphClientConfiguration(); Configuration.Bind("AzureAD", graphClientConfiguration); services.AddAuthentication(AzureADDefaults.AuthenticationScheme) .AddAzureAD(options => Configuration.Bind("AzureAd", options)); services.Configure <OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options => { options.Events = new OpenIdConnectEvents { OnTokenValidated = async ctx => { var roleGroups = new Dictionary <string, string>(); Configuration.Bind("AuthorizationGroups", roleGroups); var graphService = await GraphService.CreateOnBehalfOfUserAsync(ctx.SecurityToken.RawData, Configuration); var memberGroups = await graphService.CheckMemberGroupsAsync(roleGroups.Keys); var claims = memberGroups.Select(groupGuid => new Claim(ClaimTypes.Role, roleGroups[groupGuid])).ToList(); claims.Add(new Claim("token", ctx.SecurityToken.RawData)); var appIdentity = new ClaimsIdentity(claims); ctx.Principal.AddIdentity(appIdentity); } }; }); services.Configure <CookieAuthenticationOptions>(AzureADDefaults.CookieScheme, options => options.AccessDeniedPath = "/accessdenied"); services.AddControllersWithViews(options => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); options.Filters.Add(new AuthorizeFilter(policy)); }); services.AddRazorPages(); services.AddServerSideBlazor(); services.AddSingleton <WeatherForecastService>(); services.AddSingleton <IGraphService2>(instance => { return(new GraphService2(graphClientConfiguration)); }); }
public GraphBaseService(GraphClientConfiguration configuration, AuthorizationConfiguration authorizationConfiguration) { Configuration = configuration; AuthorizationConfiguration = authorizationConfiguration; BuildGraphClient(); }
public GraphService2(GraphClientConfiguration graphClientConfiguration) { _configuration = graphClientConfiguration; }