Пример #1
0
 public Task <OAuth20Result> HandleAsync(AccessTokenRequestMessage message)
 {
     if (VerifyAccessTokenRequest(message.ClientId, message.ClientSecret, message.Code, message.RedirectUri))
     {
         GoToState(OAuth20State.Finished);
         var result = AccessTokenResult();
         result.RedirectUri = _redirectUri;
         return(Task.FromResult(result));
     }
     return(Task.FromResult(CurrentStateResult()));
 }
Пример #2
0
        public async Task <IActionResult> Token([FromBody] AuthorizationCodeGrantRequestModel model)
        {
            if ("authorization_code".Equals(model.GrantType, StringComparison.OrdinalIgnoreCase))
            {
                var message = new AccessTokenRequestMessage(model.Code)
                {
                    ClientId     = model.ClientId,
                    ClientSecret = model.ClientSecret,
                    Code         = model.Code,
                    RedirectUri  = model.ClientSecret
                };
                var result = await _sagaBus.SendAsync <AccessTokenRequestMessage, OAuth20Result>(message);

                switch (result.State)
                {
                case OAuth20State.AuthorizationCodeGenerated:
                    return(BadRequest());

                case OAuth20State.Finished:
                    return(Ok(TokenResponseModel.FromOAuth20Result(result)));
                }
            }
            return(BadRequest());
        }
Пример #3
0
 public bool ShouldHandle(AccessTokenRequestMessage message) => _state == OAuth20State.AuthorizationCodeGenerated && message.SagaId == Id;
Пример #4
0
        public async Task<IActionResult> Token([FromBody]AuthorizationCodeGrantRequestModel model)
        {
            if ("authorization_code".Equals(model.GrantType, StringComparison.OrdinalIgnoreCase))
            {
                var message = new AccessTokenRequestMessage(model.Code)
                {
                    ClientId = model.ClientId,
                    ClientSecret = model.ClientSecret,
                    Code = model.Code
                };
                var result = await _sagaBus.SendAsync<AccessTokenRequestMessage, OAuth20Result>(message);
                switch (result.State)
                {
                    case OAuth20State.AuthorizationCodeGenerated:
                        return BadRequest();

                    case OAuth20State.Finished:
                        return Ok(TokenResponseModel.FromOAuth20Result(result));
                }
            }
            return BadRequest();
        }