/// <inheritdoc /> public BearerTokenB2CValueProvider( HttpRequest request, TokenAzureB2COptions options, FunctionTokenAttribute attribute) : this(request, options, attribute, new AzureB2CTokensLoader(), new JwtSecurityTokenHandler()) { }
/// <inheritdoc /> public BearerTokenB2CValueProvider( HttpRequest request, TokenAzureB2COptions options, FunctionTokenAttribute attribute) : base(request, options, attribute) { this.options = options; }
public BearerTokenB2CValueProvider( HttpRequest request, TokenAzureB2COptions options, FunctionTokenAttribute attribute, IAzureB2CTokensLoader loader, ISecurityTokenValidator securityHandler) : base(request, options, attribute, securityHandler) { this.options = options; azureB2CTokensLoader = loader; }
public void GetValueAsyncWorksForScope(string requiredScope, string[] authorizedRoles, List <Claim> claims, TokenStatus tokenStatus) { Mock <HttpRequest> request = new Mock <HttpRequest>(); request .SetupGet(r => r.Headers) .Returns(new HeaderDictionary { { "Authorization", "Bearer abc123" } }); request .SetupGet(r => r.HttpContext) .Returns(Mock.Of <HttpContext>()); TokenAzureB2COptions options = new TokenAzureB2COptions { AzureB2CSingingKeyUri = new Uri("http://localhost:7001") }; FunctionTokenAttribute attribute = new FunctionTokenAttribute( AuthLevel.Authorized, requiredScope, authorizedRoles ); SecurityToken mockSecurityToken = Mock.Of <SecurityToken>(); Mock <IAzureB2CTokensLoader> mockLoader = new Mock <IAzureB2CTokensLoader>(); mockLoader .Setup(l => l.Load(It.IsAny <Uri>())) .Returns(Task <List <JsonWebKey> > .Factory.StartNew(o => new List <JsonWebKey>(), null)); mockLoader .Setup(l => l.Reload(It.IsAny <Uri>())) .Returns(Task <List <JsonWebKey> > .Factory.StartNew(o => new List <JsonWebKey>(), null)); Mock <ISecurityTokenValidator> mockSecurityTokenValidator = new Mock <ISecurityTokenValidator>(); mockSecurityTokenValidator .Setup(v => v.ValidateToken( It.IsAny <string>(), It.IsAny <TokenValidationParameters>(), out mockSecurityToken ) ) .Returns( new ClaimsPrincipal( new List <ClaimsIdentity> { new ClaimsIdentity( claims, "Bearer" ) }) ); BearerTokenB2CValueProvider provider = new BearerTokenB2CValueProvider( request.Object, options, attribute, mockLoader.Object, mockSecurityTokenValidator.Object ); ((FunctionTokenResult)(provider .GetValueAsync() .GetAwaiter() .GetResult())) .Status .Should() .Be(tokenStatus); }