{"id":909,"date":"2010-03-29T14:18:57","date_gmt":"2010-03-29T06:18:57","guid":{"rendered":"http:\/\/www.andreanolanusse.com\/pt\/?p=909"},"modified":"2013-05-05T21:17:27","modified_gmt":"2013-05-06T04:17:27","slug":"autenticacao-utilizando-datasnap-2010-e-tcpip-transport","status":"publish","type":"post","link":"http:\/\/www.andreanolanusse.com\/pt\/autenticacao-utilizando-datasnap-2010-e-tcpip-transport\/","title":{"rendered":"Autentica\u00e7\u00e3o utilizando DataSnap 2010 e TCP\/IP Transport"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-908\" style=\"border: 0pt none; margin: 4px;\" title=\"DataSnap Security\" alt=\"\" src=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/03\/server-security-300x300.jpg\" width=\"300\" height=\"300\" srcset=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/03\/server-security-300x300.jpg 300w, http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/03\/server-security-300x300-80x80.jpg 80w, http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/03\/server-security-300x300-175x175.jpg 175w, http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/03\/server-security-300x300-36x36.jpg 36w, http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/03\/server-security-300x300-180x180.jpg 180w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>Uma das perguntas mais frequentes em rela\u00e7\u00e3o ao DataSnap se diz respeito a como implementar autentica\u00e7\u00e3o no DataSnap Server utilizando TCP\/IP como Transporter (componente TDSTCPServerTransporter), visto que quando utilizamos HTTP temos um componente e m\u00e9todo expecifico para tal tarefa.<\/p>\n<p>A pergunta \u00e9 v\u00e1lida, pois sem isso qualquer um poder\u00e1 conectar a seu servidor DataSnap e executar os Server Methods dispon\u00edveis. O objetivo deste post \u00e9 mostrar como fazer isso de forma bem simples.<\/p>\n<p>Vou assumir aqui que voc\u00ea j\u00e1 tem algum conhecimento do novo DataSnap, em caso contr\u00e1rio recomendo ler os posts e assistir os v\u00eddeos <strong><a href=\"http:\/\/www.andreanolanusse.com\/pt\/tag\/datasnap\/\" target=\"_blank\">aqui publicados<\/a><\/strong>.<\/p>\n<p>Para come\u00e7ar temos que passar ao servidor o usu\u00e1rio e senha, como o seu caminho de conex\u00e3o \u00e9 o componente SQLConnection \u00e9 nele que estaremos armazenado estas duas informa\u00e7\u00f5es, utilizando a propriedade Params.<\/p>\n<p>Geralmente utilizamos UserName e Password como par\u00e2metro, o que n\u00e3o \u00e9 errado, mas eu recomendo voc\u00ea utilizar os par\u00e2metros DSAuthenticationUser e DSAuthenticationPassword, porque em caso de se ter outras aplica\u00e7\u00f5es conectando ao seu servidor e utilizando HTTP como par\u00e2metro, voc\u00ea ter\u00e1 que usar estes par\u00e2metros, desta forma sendo HTTP ou TCP padronizamos neste dois par\u00e2metros.<\/p>\n<p>Nosso c\u00f3digo no lado cliente ficaria assim:<\/p>\n<pre class=\"brush: delphi\">With SQLConnection1 do begin\r\n  Params.Values['HostName'] := Server;  \/\/ Endere\u00e7o do DataSnap Server\r\n  Params.Values['Port'] := Port; \/\/ Porta\r\n  Params.Values['DSAuthenticationUser'] := 'Usuario'; \/\/ Login do Usu\u00e1rio\r\n  Params.Values['DSAuthenticationPassword'] := 'Senha'; \/\/ Senha Usu\u00e1rio\r\nend;<\/pre>\n<p>J\u00e1 no lado servidor, faremos a autentica\u00e7\u00e3o utilizando o evento OnConnect do componente DSServer.<\/p>\n<p>O evento OnConnect nos fornece o par\u00e2metro DSConnectEventObject o qual nos traz os dados da conex\u00e3o atrav\u00e9s da propriedade ConnecProperties, desta forma voc\u00ea ter\u00e1 acesso aos dois par\u00e2meteros enviados pela aplica\u00e7\u00e3o cliente e todos os outros valores parte da lista de par\u00e2metros.<\/p>\n<p>No exemplo abaixo as vari\u00e1veis login e password recebem os valores das propriedades DSAuthenticationUser e DSAuthenticationPassword e em seguinda fazem a valida\u00e7\u00e3o atrav\u00e9s da classe TUser, que \u00e9 uma classe utilizada no exemplo.<\/p>\n<p>Em caso de login ou senha inv\u00e1lido o servidor gera uma Exception, qualquer exception gerada no evento OnConnect inv\u00e1lida a conex\u00e3o, ou seja, a aplica\u00e7\u00e3o cliente n\u00e3o efetuou a conex\u00e3o ao servidor.<\/p>\n<pre class=\"brush: delphi\">With DSConnectEventObject.ConnectProperties do begin\r\n login := Properties.Values['DSAuthenticationUser'];\r\n password := Properties.Values['DSAuthenticationPassword'];\r\nend;\r\n\r\nuserConn := TUser.Create;\r\ntry\r\n\r\n  if not userConn.IsValidUser(login, password) then\r\n    raise Exception.Create('Invalid Login\/Password');\r\n\r\nfinally\r\n  userConn.Free;\r\nend;<\/pre>\n<p>Meus exemplos sobre DataSnap foram atualizados com o c\u00f3digo acima e j\u00e1 est\u00e3o dispon\u00edveis para <a href=\"http:\/\/cc.embarcadero.com\/download.aspx?id=27391\" target=\"_self\"><strong>download<\/strong><\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Uma das perguntas mais frequentes em rela\u00e7\u00e3o ao DataSnap se diz respeito a como implementar autentica\u00e7\u00e3o no DataSnap Server utilizando TCP\/IP como Transporter (componente TDSTCPServerTransporter), visto que quando utilizamos HTTP temos um componente e m\u00e9todo expecifico para tal tarefa. A pergunta \u00e9 v\u00e1lida, pois sem isso qualquer um poder\u00e1 conectar a seu servidor DataSnap e [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":908,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_s2mail":"yes","footnotes":""},"categories":[102],"tags":[23,181],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Autentica\u00e7\u00e3o utilizando DataSnap 2010 e TCP\/IP Transport | Andreano Lanusse | Tecnologia e Desenvolvimento de Software<\/title>\n<meta name=\"description\" content=\"Uma das perguntas mais frequentes em rela\u00e7\u00e3o ao DataSnap se diz respeito a como implementar autentica\u00e7\u00e3o no DataSnap Server utilizando TCP\/IP como\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.andreanolanusse.com\/pt\/autenticacao-utilizando-datasnap-2010-e-tcpip-transport\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Autentica\u00e7\u00e3o utilizando DataSnap 2010 e TCP\/IP Transport | Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"og:description\" content=\"Uma das perguntas mais frequentes em rela\u00e7\u00e3o ao DataSnap se diz respeito a como implementar autentica\u00e7\u00e3o no DataSnap Server utilizando TCP\/IP como\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.andreanolanusse.com\/pt\/autenticacao-utilizando-datasnap-2010-e-tcpip-transport\/\" \/>\n<meta property=\"og:site_name\" content=\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"article:published_time\" content=\"2010-03-29T06:18:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-05-06T04:17:27+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/03\/server-security-300x300.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"300\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:site\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\">\n\t<meta name=\"twitter:data1\" content=\"2 minutos\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"description\":\"Andreano Lanusse blog - artigos, tutoriais e v&iacute;deos sobre tecnologia, desenvolvimento de software (Delphi XE4, C#, PHP, .NET) e t&eacute;cnicas de programa&ccedil;&atilde;o\",\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"http:\/\/www.andreanolanusse.com\/pt\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/autenticacao-utilizando-datasnap-2010-e-tcpip-transport\/#primaryimage\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/03\/server-security-300x300.jpg\",\"contentUrl\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/03\/server-security-300x300.jpg\",\"width\":300,\"height\":300},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/autenticacao-utilizando-datasnap-2010-e-tcpip-transport\/#webpage\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/autenticacao-utilizando-datasnap-2010-e-tcpip-transport\/\",\"name\":\"Autentica\\u00e7\\u00e3o utilizando DataSnap 2010 e TCP\/IP Transport | Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/autenticacao-utilizando-datasnap-2010-e-tcpip-transport\/#primaryimage\"},\"datePublished\":\"2010-03-29T06:18:57+00:00\",\"dateModified\":\"2013-05-06T04:17:27+00:00\",\"description\":\"Uma das perguntas mais frequentes em rela\\u00e7\\u00e3o ao DataSnap se diz respeito a como implementar autentica\\u00e7\\u00e3o no DataSnap Server utilizando TCP\/IP como\",\"breadcrumb\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/autenticacao-utilizando-datasnap-2010-e-tcpip-transport\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/autenticacao-utilizando-datasnap-2010-e-tcpip-transport\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/autenticacao-utilizando-datasnap-2010-e-tcpip-transport\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/autenticacao-utilizando-datasnap-2010-e-tcpip-transport\/#webpage\"}}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/autenticacao-utilizando-datasnap-2010-e-tcpip-transport\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/autenticacao-utilizando-datasnap-2010-e-tcpip-transport\/#webpage\"},\"author\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"headline\":\"Autentica\\u00e7\\u00e3o utilizando DataSnap 2010 e TCP\/IP Transport\",\"datePublished\":\"2010-03-29T06:18:57+00:00\",\"dateModified\":\"2013-05-06T04:17:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/autenticacao-utilizando-datasnap-2010-e-tcpip-transport\/#webpage\"},\"commentCount\":4,\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"image\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/autenticacao-utilizando-datasnap-2010-e-tcpip-transport\/#primaryimage\"},\"keywords\":[\"DataSnap\",\"Delphi\"],\"articleSection\":[\"Delphi\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/autenticacao-utilizando-datasnap-2010-e-tcpip-transport\/#respond\"]}]},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\",\"name\":\"Andreano Lanusse\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"caption\":\"Andreano Lanusse\"},\"logo\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\"},\"sameAs\":[\"https:\/\/twitter.com\/andreanolanusse\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/909"}],"collection":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/comments?post=909"}],"version-history":[{"count":0,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/909\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media\/908"}],"wp:attachment":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media?parent=909"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/categories?post=909"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/tags?post=909"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}