public void WhenAllowAnonymousAttributeAppliedToTheGrainMethodAuthorizationShouldBeSkipped() { var grainCallContext = Substitute.For <IGrainCallContext>(); var methodInfo = Substitute.For <MethodInfo>(); grainCallContext.InterfaceMethod.Returns(methodInfo); grainCallContext.InterfaceMethod .GetCustomAttributes <AllowAnonymousAttribute>() .Returns(new[] { new AllowAnonymousAttribute() }); Assert.False(AuthorizationAdmission.IsRequired(grainCallContext)); }
public async Task Invoke(IOutgoingGrainCallContext context) { if (AuthorizationAdmission.IsRequired(context)) { await AuthorizeAsync(context); var grainType = context.Grain.GetType(); Log(LoggingEvents.OutgoingGrainCallAuthorizationPassed, grainType.Name, context.InterfaceMethod.Name); } await context.Invoke(); }
public async Task Invoke(IIncomingGrainCallContext context) { if (AuthorizationAdmission.IsRequired(context)) { var claims = await AuthorizeAsync(context); var grainType = context.Grain.GetType(); if (grainType.BaseType == typeof(GrainWithClaimsPrincipal)) { var claimsIdentity = new ClaimsIdentity(claims, "", JwtClaimTypes.Subject, JwtClaimTypes.Role); var claimsPrincipal = new ClaimsPrincipal(claimsIdentity); RequestContext.Set(ConfigurationKeys.ClaimsPrincipalKey, claimsPrincipal); } Log(LoggingEvents.IncomingGrainCallAuthorizationPassed, grainType.Name, context.InterfaceMethod.Name); } await context.Invoke(); }