Usuário com melhor resposta
Procedure Interna Validação Login senha

Pergunta
-
Salve galera!
Estou procurando a horas na net uma procedure interna do SQL Server (não setou falando de select em uma tabela de usuário e senha criada previamente) para validar usuário e senha.
No meu caso eu já estou conectado no Banco de Dados e gostaria de verificar se um usuário e senha são válidos...
Alguém sabe se existe algo assim?
Valeu ...
Respostas
-
Obrigado a todos que ajudaram!
Achei como resolver. Estava me atrapalhando com os tipos de variáveis. Deixei montado o esquema como a seguir:
Solução:
Create Function dbo.fn_Criptografa(@texto varchar(max))returns varchar(max) As
Begin
declare @criptografado varbinary(max);
set @criptografado = HASHBYTES('SHA1',@texto);
return cast('' as xml).value('xs:hexBinary(sql:variable("@criptografado") )', 'varchar(max)');
End; Create Function dbo.fn_ComparaCriptografado(@sTexto varchar(max), @sCriptografado varchar(max))returns integer As
Begin
declare @iRetorno integer,
@bTeste varbinary(max),
@sTeste varchar(max);
set @bTeste = HASHBYTES('SHA1', @sTexto);
set @sTeste = cast('' as xml).value('xs:hexBinary(sql:variable("@bTeste") )', 'varchar(max)');
if @sTeste = @sCriptografado
set @iRetorno = 1
else
set @iRetorno = 0;
return(@iRetorno);
End;Abraço
- Marcado como Resposta BuenoBox sexta-feira, 3 de agosto de 2012 14:06
Todas as Respostas
-
-
Obrigado pelo retorno Roberson,
Preciso montar uma rotina dentro do sistema para validar o usuário/senha depois de estar logado.
Porém eu não tenho tabela de usuários e senhas. Eu crio os users/login/senhas etc diretamente no Sql Server. Assim sendo, eu não consigo validar um usuário e senha passado como parâmetros através de um select. Os usuários até consigo, mas as senhas sabe Deus como são armazenadas...
Exemplo:
1- Logo como "sa";
2-Verifico se o usuário "joao" com senha "123456" está cadastrado...
3- Se estiver cadastrado, retorno verdadeiro na minha rotina do sistema.
Caso precise de mais detalhe pode falar!
O interesse é todo meu! rssobrigado
-
Boa Noite,
Acredito que o link abaixo seja de seu interesse:
Criptografia básica em SQL Server - Utilizando as funções pwdEncrypt e pwdCompare
http://www.devmedia.com.br/criptografia-basica-em-sql-server-utilizando-as-funcoes-pwdencrypt-e-pwdcompare/3932Se você já tem os usuários e senhas cadastrados no SQL Server, seria melhor utilizá-los. Outra implementação seria que você criasse sua própria tabela de usuários e senhas. Isso lhe daria mais independência, pois, você não dependeria do Engine.
[ ]s,
Gustavo Maia Aguiar
Blog: http://gustavomaiaaguiar.wordpress.com
Vídeos:http://www.youtube.com/user/gmasqlClassifique as respostas. O seu feedback é imprescindível
- Sugerido como Resposta Gustavo Maia Aguiar sexta-feira, 3 de agosto de 2012 01:06
-
Olá Gustavo,
Obrigado pela ajuda, ótimo artigo para criptografia. Dei uma pesquisa e vi que talvez seja descontinuado as funções pwdencrypt e pwdcompare nas versões atuais do SQL Server.
Assim sendo, resolvi usar a função HASHBYTES('SHA1', 'senha').
Porém, não estou conseguindo comparar as strings cryptografadas nas rotinas que criei. Estou fazendo algo errado mas não consigo achar onde ...
Se alguém puder analisar fico grato:Grato...
Create Function dbo.fn_Criptografa(@texto varchar(4000))returns varchar(4000)
As Begin
declare @criptografado varchar(4000);
set @criptografado = convert(varchar(4000), HASHBYTES('SHA1',@texto));
return(@criptografado);
End;/*select dbo.fn_Criptografa('1234') --vai retornar 'qí¤Ðž*¥ä£°¥r¬ , '*/
Create Function dbo.fn_ComparaCriptografado(@sTexto varchar(4000), @sCriptografado varchar(4000))returns integer
As Begin
declare @iRetorno integer,
@sTeste varchar(4000);
set @sTeste = convert(varchar(4000),HASHBYTES('SHA1', @sTexto));
if @sTeste = @sCriptografado
set @iRetorno = 1
else
set @iRetorno = 0;
return(@iRetorno);
End;/*select dbo.fn_ComparaCriptografado('1234','qí¤Ðž*¥ä£°¥r¬ , ')
--Está retornando "0". deveria retornar 1
*/
-
Obrigado a todos que ajudaram!
Achei como resolver. Estava me atrapalhando com os tipos de variáveis. Deixei montado o esquema como a seguir:
Solução:
Create Function dbo.fn_Criptografa(@texto varchar(max))returns varchar(max) As
Begin
declare @criptografado varbinary(max);
set @criptografado = HASHBYTES('SHA1',@texto);
return cast('' as xml).value('xs:hexBinary(sql:variable("@criptografado") )', 'varchar(max)');
End; Create Function dbo.fn_ComparaCriptografado(@sTexto varchar(max), @sCriptografado varchar(max))returns integer As
Begin
declare @iRetorno integer,
@bTeste varbinary(max),
@sTeste varchar(max);
set @bTeste = HASHBYTES('SHA1', @sTexto);
set @sTeste = cast('' as xml).value('xs:hexBinary(sql:variable("@bTeste") )', 'varchar(max)');
if @sTeste = @sCriptografado
set @iRetorno = 1
else
set @iRetorno = 0;
return(@iRetorno);
End;Abraço
- Marcado como Resposta BuenoBox sexta-feira, 3 de agosto de 2012 14:06