繁体   English   中英

FileMaker 数据的 Amazon Cognito 身份验证 API

[英]Amazon Cognito Authentication for FileMaker Data API

我正在尝试创建 JavaScript Amazon Cognito 用户池身份验证的 C# 版本(请参阅此处),但它不起作用。 响应始终显示 null。 请在下面找到代码:

using System;
using Amazon.Runtime;
using Amazon.CognitoIdentityProvider;
using Amazon.Extensions.CognitoAuthentication;

namespace ConsoleApp1
{
    class AmazonCognitoSetup
    {
        private AuthFlowResponse response;

        public AuthFlowResponse Response { get; set; }

        public async void AsyncStuff()
        {
            String userpool_id = "us-west-2_NqkuZcXQY";
            String client_id = "4l9rvl4mv5es1eep1qe97cautn";
            String username = "username"
            String password = "password"
            
            var provider = new AmazonCognitoIdentityProviderClient(new AnonymousAWSCredentials(), Amazon.RegionEndpoint.USWest2);
            var userpool = new CognitoUserPool(userpool_id, client_id, provider);
            var user = new CognitoUser(username, client_id, userpool, provider);
            InitiateSrpAuthRequest initiateSrpAuthRequest = new() { Password = password};

            Console.WriteLine("Getting credentials");
            response = await user.StartWithSrpAuthAsync(initiateSrpAuthRequest).ConfigureAwait(false);//shows null
            
            var accesstoken = response.AuthenticationResult.AccessToken;
              Console.WriteLine(accesstoken);
        }
    }
}

解决它。 问题是身份验证是异步的,所以我必须找到一种方法来阻止,直到响应返回。 请参阅下面的重做代码:

using System;
using Amazon.Runtime;
using Amazon.CognitoIdentityProvider;
using Amazon.Extensions.CognitoAuthentication;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class AmazonCognitoSetup
    {
        private string userpool_id = "us-west-2_NqkuZcXQY";
        private string client_id = "4l9rvl4mv5es1eep1qe97cautn";
        private string username = "username";
        private string password = "password";

        private string idToken;
        private string refreshToken;
        private string accessToken;

        public string IdToken { get => idToken; set => idToken = value; }
        public string RefreshToken { get => refreshToken; set => refreshToken = value; }
        public string AccessToken { get => accessToken; set => accessToken = value; }

        public void AsyncStuff()
        {
            //FileMaker PRO credentials for Amazon
            var provider = new AmazonCognitoIdentityProviderClient(new AnonymousAWSCredentials(), Amazon.RegionEndpoint.USWest2);
            var userpool = new CognitoUserPool(userpool_id, client_id, provider);
            var user = new CognitoUser(username, client_id, userpool, provider);
            InitiateSrpAuthRequest initiateSrpAuthRequest = new() { 
                Password = password
            };

            //authenticate to get tokens <--- change was here
            var task = Task.Run<AuthFlowResponse>(async()=> await user.StartWithSrpAuthAsync(initiateSrpAuthRequest));

            //assign tokens from results
            this.idToken = task.Result.AuthenticationResult.IdToken;
            this.refreshToken = task.Result.AuthenticationResult.RefreshToken;
            this.accessToken = task.Result.AuthenticationResult.AccessToken;
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM