public async Task <IActionResult> SigninCallback()
        {
            _log.Info("Start getting user session.");
            var userSession = await _userSessionManager.GetUserSession();

            if (userSession == null)
            {
                _log.Warning(SessinNotExistMessage);
                return(BadRequest(SessinNotExistMessage));
            }

            var authCode = HttpContext.Request.Query["code"];

            var tokens = await GetTokens(authCode, _ironcladSettings.AuthClient, Url.AbsoluteAction("SigninCallback", "Callback"));

            var userId = GetUserId(tokens.IdentityToken);

            var authResult = await _clientSessionsClient.Authenticate(userId, "hobbit");

            SaveAuthResult(userSession, authResult);

            SaveTokensToUserSession(userSession, tokens);

            await SaveLykkeSession(authResult.SessionToken, tokens);

            await _userSessionManager.SetUserSession(userSession);

            var query = GetAuthorizeQueryAsync(userSession);

            var redirectUri = BuildFragmentRedirectUri(query, tokens);

            _log.Info("Redirecting to client app redirect uri. RedirectUri:{RedirectUri}", redirectUri);
            return(Redirect(redirectUri));
        }
        public async Task <IActionResult> GetLykkewalletToken()
        {
            var bearerToken = HttpContext.GetBearerTokenFromAuthorizationHeader();

            if (bearerToken == null)
            {
                return(Unauthorized());
            }

            var httpClient = _httpClientFactory.CreateClient();

            var introspectionResponse = await IntrospectToken(httpClient, bearerToken);

            if (!introspectionResponse.IsActive)
            {
                return(Unauthorized());
            }

            var userId = introspectionResponse.Claims.FirstOrDefault(x => x.Type == JwtClaimTypes.Subject)?.Value;

            var authResult = await _clientSessionsClient.Authenticate(userId, "hobbit");

            var clientAccount = await _clientAccountClient.GetByIdAsync(userId);

            return(new JsonResult(new
            {
                token = authResult.SessionToken,
                authResult.AuthId,
                notificationsId = clientAccount.NotificationsId
            }));
        }
Exemplo n.º 3
0
        public async Task <IActionResult> GetLykkewalletToken()
        {
            var applicationId = HttpContext.GetApplicationId();

            if (!applicationId.IsValidPartitionOrRowKey())
            {
                return(BadRequest("Invalid applicationId"));
            }

            var app = await _applicationRepository.GetByIdAsync(applicationId);

            if (app == null)
            {
                return(BadRequest("Application Id Incorrect!"));
            }

            var clientId = User.Identity.GetClientId();

            if (clientId == null)
            {
                return(NotFound("Can't get clientId from claims"));
            }

            ClientModel clientAccount = await GetClientByIdAsync(clientId);

            if (clientAccount == null)
            {
                return(NotFound("Client not found"));
            }

            try
            {
                var authResult = await _clientSessionsClient.Authenticate(clientAccount.Id, "oauth server", application : app.Type);

                return(Json(new { Token = authResult.SessionToken, authResult.AuthId }));
            }
            catch (Exception ex)
            {
                await _log.WriteErrorAsync(nameof(UserinfoController), nameof(GetLykkewalletToken), $"clientId = {clientAccount.Id}", ex);

                return(StatusCode(500, new { Message = "auth error" }));
            }
        }