示例#1
0
        public static async Task <string> CreateToken <T>(
            IServiceProvider serviceProvider, T payload)
        {
            IBewitTokenGenerator <T> bewitGenerator = serviceProvider
                                                      .GetService <IBewitTokenGenerator <T> >();

            return((await bewitGenerator
                    .GenerateBewitTokenAsync(payload, default))
                   .ToString());
        }
示例#2
0
        public async Task InvokeAsync(
            IMiddlewareContext context,
            IBewitTokenGenerator <TPayload> tokenGenerator)
        {
            await _next(context).ConfigureAwait(false);

            if (context.Result is TPayload result)
            {
                BewitToken <TPayload> bewit
                    = await tokenGenerator.GenerateBewitTokenAsync(
                          result,
                          context.RequestAborted);

                context.Result = (string)bewit;
            }
        }
示例#3
0
        public async Task <string> CreateBewitToken(CreateBewitTokenInput input)
        {
            switch (input.TokenType)
            {
            case TokenType.FooPayload:
                return((await _fooPayloadGenerator
                        .GenerateBewitTokenAsync(new FooPayload(), default))
                       .ToString());

            case TokenType.BarPayload:
                return((await _barPayloadGenerator
                        .GenerateBewitTokenAsync(new BarPayload(), default))
                       .ToString());

            default:
                throw new InvalidOperationException();
            }
        }
示例#4
0
        public static async Task <string> CreateBadToken()
        {
            var bewitOptions = new BewitOptions
            {
                Secret = "badSecret", TokenDuration = TimeSpan.FromMinutes(5)
            };

            ServiceProvider serviceProvider = new ServiceCollection()
                                              .AddBewitGeneration(bewitOptions, b => b.AddPayload <string>())
                                              .BuildServiceProvider();

            IBewitTokenGenerator <string> bewitGenerator = serviceProvider
                                                           .GetService <IBewitTokenGenerator <string> >();

            return((await bewitGenerator
                    .GenerateBewitTokenAsync("badPayload", default))
                   .ToString());
        }
示例#5
0
        public async Task InvokeAsync(
            IMiddlewareContext context,
            IBewitTokenGenerator <string> tokenGenerator)
        {
            await _next(context).ConfigureAwait(false);

            if (context.Result is string result)
            {
                var uri = new Uri(result);

                BewitToken <string> bewit =
                    await tokenGenerator.GenerateBewitTokenAsync(
                        uri.PathAndQuery, context.RequestAborted);

                var parametersToAdd = new Dictionary <string, string>
                {
                    { "bewit", WebUtility.UrlEncode((string)bewit) }
                };
                var newUri =
                    QueryHelpers.AddQueryString(result, parametersToAdd);

                context.Result = newUri;
            }
        }