예제 #1
0
        public async Task <ActionResult> GetAccounts()
        {
            var token = this.Session["userTokenData"] as TokenModel;

            this._tlsCertificate.Import(ReadFile(this.tlsCertPath), "millennium", X509KeyStorageFlags.DefaultKeySet);

            this._signCertificate.Import(ReadFile(this.signCertPath), "millennium", X509KeyStorageFlags.DefaultKeySet);
            var httpHandler = new WebRequestHandler();

            httpHandler.ClientCertificateOptions = ClientCertificateOption.Manual;
            httpHandler.ClientCertificates.Add(this._tlsCertificate);
            var api     = new PolishAPI(httpHandler, new RequestSigningHandler(this._signCertificate));
            var request = new AccountsRequest(
                new RequestHeaderAIS(token.accessToken, Guid.NewGuid().ToString(), sendDate: DateTime.Now.ToString(), tppId: "*****@*****.**", isDirectPsu: true),
                true,
                null,
                0);

            api.BaseUri        = new Uri("https://bm-devportal-testwebapp02.azurewebsites.net");
            api.AcceptLanguage = "pl-PL";
            api.HttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "Bearer " + token.accessToken);

            api.XJWSSIGNATURE = JWT.Encode(JsonConvert.SerializeObject(request), this._signCertificate.GetRSAPrivateKey(),
                                           JwsAlgorithm.RS256);
            ;
            var result = await api.GetAccountsWithHttpMessagesAsync(request);

            var model = result.Body as AccountsResponse;

            return(View(model.Accounts));
        }
예제 #2
0
        // GET: UserLogged
        public async Task <ActionResult> Logged(string code, string state, string error, string redirect)
        {
            if (redirect == null)
            {
                return(new EmptyResult());
            }
            var client = new HttpClient();

            var payload = new Dictionary <string, string>()
            {
                { "sub", "*****@*****.**" }
            };

            this._signCertificate.Import(ReadFile(this.signCertPath), "millennium", X509KeyStorageFlags.DefaultKeySet);
            string tokenSigned = JWT.Encode(payload, this._signCertificate.GetRSAPrivateKey(), JwsAlgorithm.RS256);
            var    link        = string.Format(
                "https://bm-devportal-testwebapp03.azurewebsites.net/tokens?code={0}&redirect_uri={1}&client_id={2}&client_assertion={3}",
                code, "http://*****:*****@bankmillennium.pl", tokenSigned);
            var result = await client.GetAsync(link);

            var token = await result.Content.ReadAsAsync <TokenModel>();

            this.Session["userTokenData"] = token;

            this._tlsCertificate.Import(ReadFile(this.tlsCertPath), "millennium", X509KeyStorageFlags.DefaultKeySet);

            this._signCertificate.Import(ReadFile(this.signCertPath), "millennium", X509KeyStorageFlags.DefaultKeySet);
            var httpHandler = new WebRequestHandler();

            httpHandler.ClientCertificateOptions = ClientCertificateOption.Manual;
            httpHandler.ClientCertificates.Add(this._tlsCertificate);

            var api     = new PolishAPI(httpHandler, new RequestSigningHandler(this._signCertificate));
            var request = new AccountsRequest(
                new RequestHeaderAIS(token.accessToken, Guid.NewGuid().ToString(), sendDate: DateTime.Now.ToString(), tppId: "*****@*****.**", isDirectPsu: true),
                true,
                null,
                0);

            api.BaseUri        = new Uri("https://bm-devportal-testwebapp02.azurewebsites.net");
            api.AcceptLanguage = "pl-PL";
            api.HttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "Bearer " + token.accessToken);

            api.XJWSSIGNATURE = JWT.Encode(JsonConvert.SerializeObject(request), this._signCertificate.GetRSAPrivateKey(),
                                           JwsAlgorithm.RS256);
            var result2 = await api.GetAccountsWithHttpMessagesAsync(request);

            var model = result2.Body as AccountsResponse;

            var account = model.Accounts.First();

            var request2 = new AccountInfoRequest
            {
                AccountNumber = account.AccountNumber,
                RequestHeader =
                    new RequestHeaderAIS(token.accessToken, Guid.NewGuid().ToString(),
                                         sendDate: DateTime.Now.ToString(), tppId: "*****@*****.**", isDirectPsu: true)
            };
            var result3 = await api.GetAccountWithHttpMessagesAsync(request2);

            var accountInfo = result3.Body as AccountResponse;

            return(View(accountInfo.Account));
        }