示例#1
0
 public Register(ClientResource clientResource, RegisterInitialModel registerInitialModel, IAESCrypter aesCrypter)
 {
     this.aesCrypter             = aesCrypter;
     this.clientResource         = clientResource;
     this.addMinuteExpiredTime   = registerInitialModel.AddMinuteExpiredTime;
     this.authServerAuthenApiUrl = registerInitialModel.AuthServerAuthenApiUrl;
     this.protectedAuthenApiUrl  = registerInitialModel.ProtectedAuthenApiUrl;
 }
示例#2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            ClientResource clientResource = new ClientResource()
            {
                ClientId         = "6365724719934223450001",
                ClientKey        = "A25AD6A46FD945C7647AD34A993E01AF",
                ClientIV         = "5687EC92759818B5",
                ClientName       = "Sample",
                ProtectedServers = new List <ClientToProtectedServerData>(),
            };
            RegisterInitialModel registerInitialModel = new RegisterInitialModel()
            {
                AddMinuteExpiredTime   = 30,
                AuthServerAuthenApiUrl = "http://localhost:21383/api/RegisterService/Authen/",
                ProtectedAuthenApiUrl  = "http://localhost:21383/api/RegisterService/CheckClientRequest",
            };
            Register register  = new Register(clientResource, registerInitialModel, new LocalMachineAESCrypter());
            var      apiResult = register.Authenticate();

            if (apiResult == false)
            {
                Console.WriteLine(apiResult.ResultMessage);
                //Auth Server 驗證失敗
                Environment.Exit(1);
            }
            List <string> cypherTextList = apiResult.Value.CypherTextList;
            List <AuthClientCypherTextModel> authClientCyphersTextList = new List <AuthClientCypherTextModel>();

            cypherTextList.ForEach(x => authClientCyphersTextList.Add(register.DecryptAuthServerResp(x)));

            //當需要去Protected Server溝通時 取出相對應的 AuthClientCypherTextModel
            AuthClientCypherTextModel authClient = authClientCyphersTextList.Where(x => x.ProtectedId == "目標Protected Server Id").Single();
            //先去 Protected Server 取得驗證相關資料
            AuthorizeValueModel authorizeValueModel = register.SendCypherTextToProtectedResourceForVerify(authClient, "目標Protected Server Id");

            PostSampleData postSampleData = new PostSampleData()
            {
                Data  = "Sample1",
                Data2 = "Sample2"
            };

            //取得 afterPostAuthorizeValueModel 後,更新 AuthorizeValueModel 供下次呼叫此 Protected Server 使用
            var afterPostAuthorizeValueModel = register.SendRequestAndAuthorizeByPost <PostSampleData>("目標Protected Server URL", authorizeValueModel, postSampleData);
        }