Este é um post disponível para assinantes MVPEste post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Spring Security 3 – Parte 1 - Java Magazine 87
O artigo ensina a utilizar o framework Spring Security 3 para o desenvolvimento de aplicações web seguras. Além disso, descreve as técnicas necessárias para permitir o acesso através de contas OpenID.
Java Magazine 87
[Artigo já está disponível no Leitor Digital DevMedia®. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da Java Magazine 87
[Artigo já está disponível no Leitor Digital DevMedia®. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da Java Magazine 87
Spring Security 3 – Parte 1
As novidades para a segurança das aplicações
Aprenda a construir aplicações seguras com a nova versão deste framework e descubra como permitir acesso através do OpenID
De que se trata o artigo:
O artigo ensina a utilizar o framework Spring Security 3 para o desenvolvimento de aplicações web seguras. Além disso, descreve as técnicas necessárias para permitir o acesso através de contas OpenID.
Para que serve:
O Spring Security é um framework responsável por cuidar da autenticação e autorização de usuários em aplicações web. A sua utilização permite aos desenvolvedores passar menos tempo se preocupando com a segurança, deixando-a sob responsabilidade da ferramenta.
Em que situação o tema é útil:
O desenvolvimento de aplicações seguras em um curto espaço de tempo e com qualidade garantida é essencial para as empresas de software, onde a concorrência é cada vez mais acirrada e os perigos mais frequentes. Neste contexto, os desenvolvedores precisam de ferramentas que auxiliem nos momentos que forem necessárias alterações nas políticas de segurança, como por exemplo, quando surge a necessidade de novas formas de autenticação e autorização. Para isso, as funcionalidades do Spring Security se encaixam perfeitamente.
Spring Security 3:
Para utilizar o Spring Security você deve saber diferenciar inicialmente dois conceitos básicos: autenticação, através da qual um usuário pode entrar em uma área restrita da aplicação, e autorização, onde são definidas permissões de acesso para as funcionalidades. Também é necessário conhecer as dependências que permitem o funcionamento correto do framework. Dentre elas estão as bibliotecas do Spring 3 e commons logging da Apache.
Ao criar uma aplicação é importante definir inicialmente as autorizações para cada página, e isto é feito, no Spring Security, através de um arquivo xml de configuração. Neste arquivo, também devem ser descritas informações sobre o banco de dados e as consultas necessárias para obter os usuários com permissão de acesso e suas autorizações. Outra forma do Spring Security conhecer estes usuários é através da descrição no próprio arquivo xml.
A segurança é um requisito fundamental para as aplicações web, e as ferramentas responsáveis por garanti-la precisam acompanhar a evolução e as necessidades do mercado para que o bem mais valioso das empresas (suas informações e os dados de seus clientes) continue protegido. Com isso, a Spring Source, buscando manter seu framework Spring Security atualizado e atendendo as necessidades do mercado, lançou uma nova versão.
O Spring Security surgiu da necessidade de uma biblioteca de segurança Java robusta e adaptável a diversos tipos de situações. Apesar de existirem ferramentas como o Java Authentication and Authorization Service (JAAS) e o Java EE Security, a tecnologia da Spring Source é uma opção diferenciada que provê um conjunto de funcionalidades de fácil uso, além de fornecer apoio para integração com vários outros sistemas de autenticação que podem já existir na empresa ou ser de sua necessidade. Os desenvolvedores que o utilizam ganham na produtividade, nas muitas possibilidades e na qualidade da ferramenta.
Este artigo será apresentado em duas partes para permitir que o leitor conheça na íntegra todas as novidades da ferramenta que a tornaram mais completa e organizada. Nesta primeira parte você aprenderá conceitos básicos, necessários para a construção de aplicativos seguros, em seguida, descobrirá como utilizar a nova versão para garantir a segurança das suas aplicações de forma simples e rápida e, por fim, conhecerá as técnicas para permitir o login através do OpenID, ampliando as possibilidades de acesso dos aplicativos.
Na segunda parte – que deve ser publicada na próxima edição – você irá conhecer as novidades do framework, entre elas: o uso da Spring Expression Language (SpEL) para auxiliar na definição de regras de acesso, novas maneiras de utilizar a tag <authorize> para permitir a renderização do conteúdo das páginas, melhorias para o uso do OpenID, assim como, modificações nas extensões suportadas. Ainda na segunda parte, abordaremos as alterações necessárias para migrar as aplicações que já utilizavam o Spring Security 2.x.
"
ATENÇÃO! A exibição deste artigo foi interrompida.
Este é um post disponível para assinantes MVP
As novidades para a segurança das aplicações
Aprenda a construir aplicações seguras com a nova versão deste framework e descubra como permitir acesso através do OpenID
De que se trata o artigo:
O artigo ensina a utilizar o framework Spring Security 3 para o desenvolvimento de aplicações web seguras. Além disso, descreve as técnicas necessárias para permitir o acesso através de contas OpenID.
Para que serve:
O Spring Security é um framework responsável por cuidar da autenticação e autorização de usuários em aplicações web. A sua utilização permite aos desenvolvedores passar menos tempo se preocupando com a segurança, deixando-a sob responsabilidade da ferramenta.
Em que situação o tema é útil:
O desenvolvimento de aplicações seguras em um curto espaço de tempo e com qualidade garantida é essencial para as empresas de software, onde a concorrência é cada vez mais acirrada e os perigos mais frequentes. Neste contexto, os desenvolvedores precisam de ferramentas que auxiliem nos momentos que forem necessárias alterações nas políticas de segurança, como por exemplo, quando surge a necessidade de novas formas de autenticação e autorização. Para isso, as funcionalidades do Spring Security se encaixam perfeitamente.
Spring Security 3:
Para utilizar o Spring Security você deve saber diferenciar inicialmente dois conceitos básicos: autenticação, através da qual um usuário pode entrar em uma área restrita da aplicação, e autorização, onde são definidas permissões de acesso para as funcionalidades. Também é necessário conhecer as dependências que permitem o funcionamento correto do framework. Dentre elas estão as bibliotecas do Spring 3 e commons logging da Apache.
Ao criar uma aplicação é importante definir inicialmente as autorizações para cada página, e isto é feito, no Spring Security, através de um arquivo xml de configuração. Neste arquivo, também devem ser descritas informações sobre o banco de dados e as consultas necessárias para obter os usuários com permissão de acesso e suas autorizações. Outra forma do Spring Security conhecer estes usuários é através da descrição no próprio arquivo xml.
A segurança é um requisito fundamental para as aplicações web, e as ferramentas responsáveis por garanti-la precisam acompanhar a evolução e as necessidades do mercado para que o bem mais valioso das empresas (suas informações e os dados de seus clientes) continue protegido. Com isso, a Spring Source, buscando manter seu framework Spring Security atualizado e atendendo as necessidades do mercado, lançou uma nova versão.
O Spring Security surgiu da necessidade de uma biblioteca de segurança Java robusta e adaptável a diversos tipos de situações. Apesar de existirem ferramentas como o Java Authentication and Authorization Service (JAAS) e o Java EE Security, a tecnologia da Spring Source é uma opção diferenciada que provê um conjunto de funcionalidades de fácil uso, além de fornecer apoio para integração com vários outros sistemas de autenticação que podem já existir na empresa ou ser de sua necessidade. Os desenvolvedores que o utilizam ganham na produtividade, nas muitas possibilidades e na qualidade da ferramenta.
Este artigo será apresentado em duas partes para permitir que o leitor conheça na íntegra todas as novidades da ferramenta que a tornaram mais completa e organizada. Nesta primeira parte você aprenderá conceitos básicos, necessários para a construção de aplicativos seguros, em seguida, descobrirá como utilizar a nova versão para garantir a segurança das suas aplicações de forma simples e rápida e, por fim, conhecerá as técnicas para permitir o login através do OpenID, ampliando as possibilidades de acesso dos aplicativos.
Na segunda parte – que deve ser publicada na próxima edição – você irá conhecer as novidades do framework, entre elas: o uso da Spring Expression Language (SpEL) para auxiliar na definição de regras de acesso, novas maneiras de utilizar a tag <authorize> para permitir a renderização do conteúdo das páginas, melhorias para o uso do OpenID, assim como, modificações nas extensões suportadas. Ainda na segunda parte, abordaremos as alterações necessárias para migrar as aplicações que já utilizavam o Spring Security 2.x.
"
ATENÇÃO! A exibição deste artigo foi interrompida.
Este é um post disponível para assinantes MVPEste post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais!

29 COMENTÁRIOS
Casa Publicadora Brasileira
Outro detalhe é que o campo username da tabela usuário possui o tamanho 10 e a da Autorizacoes possui tamanho 15. Acho que é interessante que os tamanhos sejam iguais.
[há +1 ano] -
Responder
[autor]
José Alexandre Macedo
Olá,
Sim é interessante que sejam do mesmo tamanho por uma questão de padronização, porém como o tamanho menor está na tabela usuario não existe o perigo de acontecerem erros por esse motivo .
Att.
José Alexandre Macedo.
[há +1 ano] -
Responder

Casa Publicadora Brasileira
Existe alguns erros na sintaxe do sql da Listagem 1. Fiz as simples correções e estou postando o código caso alguém precise.
obs: Um detalhe importante é que há um usuário, sugerido na listagem: 'http://jamacedo.myopenid.com' que é muito grande para o tamanho do campo portanto não dá para inserí-lo, desta forma não acrescentei na correção abaixo:
CREATE TABLE usuarios (
username varchar(10) NOT NULL,
password varchar(16) NOT NULL,
enable tinyint(1) NOT NULL,
PRIMARY KEY (username) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE autorizacoes (
authority varchar(15) NOT NULL,
username varchar(15) NOT NULL,
PRIMARY KEY ( authority,username),
KEY FK_username (username),
CONSTRAINT FK_username FOREIGN KEY (username) REFERENCES usuarios (username)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO usuarios (username,password,enable) VALUES ('jose', '123',1);
INSERT INTO usuarios (username,password,enable) VALUES ('maria','321',1);
INSERT INTO autorizacoes (authority,username) VALUES ( 'ROLE_ADMIN','jose');
INSERT INTO autorizacoes (authority,username) VALUES ( 'ROLE_USER', 'jose');
INSERT INTO autorizacoes (authority,username) VALUES ( 'ROLE_USER', 'maria');
[há +1 ano] -
Responder
[autor]
José Alexandre Macedo
Olá,
As aspas não eram erros de sintaxe. Talvez a maneira como você está adicionando os dados no banco seja diferente da pensada por mim. Da forma como foi mostrado na Listagem 1 o correto seria salvar o código em um arquivo .sql e em seguida restaurar no MySql.
O que não está correto é a ordem das inserções. A ordem apresentada por você é a certa: tabela usuarios, tabela autorizacoes, inserção de usuário e por último inserção de autorizações.
Agradeço a correção!
Qualquer dúvida estou a disposição!
Att.
José Alexandre Macedo.
As aspas não eram erros de sintaxe. Talvez a maneira como você está adicionando os dados no banco seja diferente da pensada por mim. Da forma como foi mostrado na Listagem 1 o correto seria salvar o código em um arquivo .sql e em seguida restaurar no MySql.
O que não está correto é a ordem das inserções. A ordem apresentada por você é a certa: tabela usuarios, tabela autorizacoes, inserção de usuário e por último inserção de autorizações.
Agradeço a correção!
Qualquer dúvida estou a disposição!
Att.
José Alexandre Macedo.
[há +1 ano] -
Responder

Casa Publicadora Brasileira
O Conceito apresentado neste artigo funcionará com o Flex também?
[há +1 ano] -
Responder
[autor]
José Alexandre Macedo
Olá,
Sim, o Spring Security 3 pode ser integrado ao Flex. Uma das alternativas seria utilizando BlazeDS, existem alguns artigos disponíveis na web que explicam como essa integração deve ser feita.
Qualquer dúvida estou a disposição!
José Alexandre Macedo.
[há +1 ano] -
Responder
Casa Publicadora Brasileira
Olá José!
Obrigado pelo retorno! Eu tenho sim uma aplicação com flex e java e BlazeDS e como possuo vários sistemas que se autenticam na mesma tabela, tenho interesse neste artigo para que eu possa fazer apenas um login que autentique o usuário nos diversos sistemas, sem ter que ficar digitando login e senha para cada sistema. Estou ansioso pela continuação do artigo!
Obrigado!
Obrigado pelo retorno! Eu tenho sim uma aplicação com flex e java e BlazeDS e como possuo vários sistemas que se autenticam na mesma tabela, tenho interesse neste artigo para que eu possa fazer apenas um login que autentique o usuário nos diversos sistemas, sem ter que ficar digitando login e senha para cada sistema. Estou ansioso pela continuação do artigo!
Obrigado!
[há +1 ano] -
Responder
[autor]
José Alexandre Macedo
Olá,
O Spring Security suporta um login para diversas aplicações, isso é chamado de single sign on. No SS isso pode ser implementado através do Central Authentication Service (CAS).
Fico feliz que tenha gostado! A segunda parte logo estará nas bancas!
Qualquer dúvida estou aí!
Att.
José Alexandre Macedo
O Spring Security suporta um login para diversas aplicações, isso é chamado de single sign on. No SS isso pode ser implementado através do Central Authentication Service (CAS).
Fico feliz que tenha gostado! A segunda parte logo estará nas bancas!
Qualquer dúvida estou aí!
Att.
José Alexandre Macedo
[há +1 ano] -
Responder

Alex Braga
Olá,
Parabéns, excelente matéria.
Tenho uma dúvida quanto ao banco, a tabela de usuários e autorizacoes deve seguir esta estrutura específica, ou apenas deve ser respeitados os nomes das colunas?
Ex:
users-by-username-query="SELECT login as username, senhas as password, enable FROM usuarios WHERE username=?"
authorities-by-username-query="SELECT login as username, papeis as authority FROM autorizacoes WHERE
login=?"/>
No caso de um banco existente.
Obrigado.
Parabéns, excelente matéria.
Tenho uma dúvida quanto ao banco, a tabela de usuários e autorizacoes deve seguir esta estrutura específica, ou apenas deve ser respeitados os nomes das colunas?
Ex:
authorities-by-username-query="SELECT login as username, papeis as authority FROM autorizacoes WHERE
login=?"/>
No caso de um banco existente.
Obrigado.
[há +1 ano] -
Responder
[autor]
José Alexandre Macedo
Olá Alex,
Que bom que gostou da matéria. Em Fevereiro tem a segunda parte!
Os nomes das colunas no banco não precisam ser iguais aos exigidos pelo Spring Security, você só precisa neste caso utilizar o "as" como você fez no exemplo. Seu exemplo está correto e funcionaria sem problemas.
Qualquer dúvida estou a disposição!
Abraços,
José Alexandre Macedo.
Que bom que gostou da matéria. Em Fevereiro tem a segunda parte!
Os nomes das colunas no banco não precisam ser iguais aos exigidos pelo Spring Security, você só precisa neste caso utilizar o "as" como você fez no exemplo. Seu exemplo está correto e funcionaria sem problemas.
Qualquer dúvida estou a disposição!
Abraços,
José Alexandre Macedo.
[há +1 ano] -
Responder

Giovani Hardt
Muito bom o artigo ! Segui os procedimentos em tive problemas.
Mas, agora, tenho uma dúvida.. vou ter que utilizar o Glassfish 3.1 como servidor (antes estava usando o Tomcat), tem algum procedimento diferente a ser feito ou não é compatível ?
Mas, agora, tenho uma dúvida.. vou ter que utilizar o Glassfish 3.1 como servidor (antes estava usando o Tomcat), tem algum procedimento diferente a ser feito ou não é compatível ?
[há +1 mês] -
Responder
[autor]
José Alexandre Macedo
Olá Giovani,
Não cheguei a testar esta versão no Glassfish 3.1, mas imagino que você não terá problemas para executar suas aplicações nele!
Qualquer coisa estou a disposição!
Abraços,
José Alexandre
Não cheguei a testar esta versão no Glassfish 3.1, mas imagino que você não terá problemas para executar suas aplicações nele!
Qualquer coisa estou a disposição!
Abraços,
José Alexandre
[há +1 mês] -
Responder

Cpb A/c Edmir Diniz
Olá José, preciso de uma orientação com relação à autenticação com o openId!
- Baixei o projeto do devmedia;
- criei minha conta openId;
- inseri o usuário no banco de dados, cfe orientações do artigo;
- Realizei o login, apareceu q foi efetuado com sucesso:
INFO: Verification succeeded for: http://kweles.myopenid.com/
Contudo qdo ele redireciona para a página do sistema a url já aparece com erro:
http://localhost:8080/springsecurity/spring_security_login?login_error
e vem o erro da página:
HTTP Status 404 - /springsecurity/spring_security_login
Percebo que o redirecionamento é para: http://localhost:8080/springsecurity/spring_security_login?
Mas não está funcionado, o que pode estar errado?
Tomei o cuidado de baixar seu projeto e não alterá-lo, exceto o usuário e senha
Obrigado!
- Baixei o projeto do devmedia;
- criei minha conta openId;
- inseri o usuário no banco de dados, cfe orientações do artigo;
- Realizei o login, apareceu q foi efetuado com sucesso:
INFO: Verification succeeded for: http://kweles.myopenid.com/
Contudo qdo ele redireciona para a página do sistema a url já aparece com erro:
http://localhost:8080/springsecurity/spring_security_login?login_error
e vem o erro da página:
HTTP Status 404 - /springsecurity/spring_security_login
Percebo que o redirecionamento é para: http://localhost:8080/springsecurity/spring_security_login?
Mas não está funcionado, o que pode estar errado?
Tomei o cuidado de baixar seu projeto e não alterá-lo, exceto o usuário e senha
Obrigado!
[há +1 mês] -
Responder

Cpb A/c Edmir Diniz
Olá José!
Funcionou! faltava eu adicionar as autorizações ao usuário como role_admin ou role_user.
Eu tenha uma dúvida, será que poderia me orientar?
Temos sistemas que estão disponíveis na web e queremos implementar para eles uma algo semelhante ao openid ou ao cas para que eles possam se autenticar 1 vez e depois já estejam autenticados para os outros sistemas.
Pergunta:
Seria melhor o cas ou openid?
Sendo um dos dois, estes seriam seguros, por estarem expostos na web? Seria melhor implementar ssl para garantir mais segurança correto?
Definido isto, precisarei integrar com o flex.
Obrigado!
Funcionou! faltava eu adicionar as autorizações ao usuário como role_admin ou role_user.
Eu tenha uma dúvida, será que poderia me orientar?
Temos sistemas que estão disponíveis na web e queremos implementar para eles uma algo semelhante ao openid ou ao cas para que eles possam se autenticar 1 vez e depois já estejam autenticados para os outros sistemas.
Pergunta:
Seria melhor o cas ou openid?
Sendo um dos dois, estes seriam seguros, por estarem expostos na web? Seria melhor implementar ssl para garantir mais segurança correto?
Definido isto, precisarei integrar com o flex.
Obrigado!
[há +1 mês] -
Responder
[autor]
José Alexandre Macedo
Olá Edmir,
Neste caso imagino que o CAS esteja mais de acordo com suas necessidades...
Com relação ao ssl, veja isso: "Não há como o SSL proteger 100% do ambiente da aplicação web, e evitar, por exemplo, que na camada da aplicação haja vulnerabilidades exploráveis a partir de comandos enviados pelo navegador (injeção de SQL), ou que os dados entregues ao servidor não possam ser acessados por outros meios na rede.
Além disso, existem vários relatos de ataques em sites com SSL e Certificados Digitais, entre eles o típico Cross Site Script (XSS) que permite ao Agente Malicioso interromper e desviar a conexão de um usuário para outro servidor web, criando assim um cenário de ataque crítico." Ref.: http://www.redesegura.com.br/mitos-da-seguranca/mito-3-o-ssl-garante-nossa-seguranca
Então utilizar ssl não vai garantir totalmente a segurança dos seus sistemas!
Qualquer coisa estou aí!
Abraços,
José Alexandre
Neste caso imagino que o CAS esteja mais de acordo com suas necessidades...
Com relação ao ssl, veja isso: "Não há como o SSL proteger 100% do ambiente da aplicação web, e evitar, por exemplo, que na camada da aplicação haja vulnerabilidades exploráveis a partir de comandos enviados pelo navegador (injeção de SQL), ou que os dados entregues ao servidor não possam ser acessados por outros meios na rede.
Além disso, existem vários relatos de ataques em sites com SSL e Certificados Digitais, entre eles o típico Cross Site Script (XSS) que permite ao Agente Malicioso interromper e desviar a conexão de um usuário para outro servidor web, criando assim um cenário de ataque crítico." Ref.: http://www.redesegura.com.br/mitos-da-seguranca/mito-3-o-ssl-garante-nossa-seguranca
Então utilizar ssl não vai garantir totalmente a segurança dos seus sistemas!
Qualquer coisa estou aí!
Abraços,
José Alexandre
[há +1 mês] -
Responder
Cpb A/c Edmir Diniz
Obrigado pelo retorno!
Estou implementando o cas!
Obrigado!
Estou implementando o cas!
Obrigado!
[há +1 mês] -
Responder
Cpb A/c Edmir Diniz
Olá José!
Acabei de implementar o Cas e está funcionando muito bem. Obrigado pelas orientações.
Qdo solicita um sistema, automaticamente sou redirecionado para o CAS e após o login sou redirecionado para a aplicação como esperado.
Contudo na minha realidade possuo vários sistemas e precisaria de que o usuário se autenticar em um dos sistemas ele pudesse ficar autenticado para os outros, sem ter que informar usuário e senha novamente ao entrar nos outros sistemas.
O CAS fornece algum recurso para isto?
Imagino o seguinte, que o usuário deva solicitar um sistema que seja tipo um portal. Neste momento ele deve ser redirecionado ao cas, se logar e depois aparecerá uma lista com todos os sistemas que ele possui acesso.
Neste caso ao clicar em qualquer um deles ele poderá utilizá-lo sem a necessidade de se autenticar novamente.
Não sei se consegui me explicar corretamente?
Agradeço suas orientações e a atenção dispensada.
Obrigado Weles!
Acabei de implementar o Cas e está funcionando muito bem. Obrigado pelas orientações.
Qdo solicita um sistema, automaticamente sou redirecionado para o CAS e após o login sou redirecionado para a aplicação como esperado.
Contudo na minha realidade possuo vários sistemas e precisaria de que o usuário se autenticar em um dos sistemas ele pudesse ficar autenticado para os outros, sem ter que informar usuário e senha novamente ao entrar nos outros sistemas.
O CAS fornece algum recurso para isto?
Imagino o seguinte, que o usuário deva solicitar um sistema que seja tipo um portal. Neste momento ele deve ser redirecionado ao cas, se logar e depois aparecerá uma lista com todos os sistemas que ele possui acesso.
Neste caso ao clicar em qualquer um deles ele poderá utilizá-lo sem a necessidade de se autenticar novamente.
Não sei se consegui me explicar corretamente?
Agradeço suas orientações e a atenção dispensada.
Obrigado Weles!
[há +1 mês] -
Responder
Dyego Souza Do Carmo
Você precisa de uma solução SSO (Single Sign On) , e isto é dependente de container , cada faz de uma forma...
Qual que vc esta usando ?
Qual que vc esta usando ?
[há +1 mês] -
Responder
Cpb A/c Edmir Diniz
Olá Diego!
Obrigado pelo retorno!
Então eu estou integrando o spring security com o CAS da JASIG.
Toda vez que um usuário tenta acessar o sistema e não está autenticado ele é interceptado pelo CAS onde ele faz o login. Após o login o CAS redireciona ele para o sistema.
Isto está funcionando. Contudo possuímos vários sistemas e queria saber se tem algum meio de ao ele se logar ficar autenticado para os outros sistemas sem ter que ser interceptado pelo CAS novamente exigindo usuário e senha.
Semelhante ao que temos no google, quando nos logamos em algum serviço dele os outros não exigem mais o login e senha.
Obrigado pelo apoio!
Obrigado pelo retorno!
Então eu estou integrando o spring security com o CAS da JASIG.
Toda vez que um usuário tenta acessar o sistema e não está autenticado ele é interceptado pelo CAS onde ele faz o login. Após o login o CAS redireciona ele para o sistema.
Isto está funcionando. Contudo possuímos vários sistemas e queria saber se tem algum meio de ao ele se logar ficar autenticado para os outros sistemas sem ter que ser interceptado pelo CAS novamente exigindo usuário e senha.
Semelhante ao que temos no google, quando nos logamos em algum serviço dele os outros não exigem mais o login e senha.
Obrigado pelo apoio!
[há +1 mês] -
Responder

Marco De Freitas Jr
Bom dia.
Primeiramente, muito bom o artigo!!
Gostaria de uma ajuda, se possível:
Estou tentando ter o acesso via myopenid ou pelo Google, mas estou tendo esse erro do Tomcat:
message: /jm87-SpringSecurity3-CodigoFonte/spring_security_login
description: The requested resource (/jm87-SpringSecurity3-CodigoFonte/spring_security_login) is not available.
E na url consta:
http://localhost:8080/jm87-SpringSecurity3-CodigoFonte/spring_security_login?login_error
Estou executando o projeto pego dos download da revista mesmo, as únicas alterações que fiz é sobre a conexão com o BD. O resto esta funcionando normalmente. Sou levado normalmente para a tela de login (tanto do openID qto do Google), me é informado no log do Tomcat que foi verificado com sucesso, mas parece que não encontra o "spring_security_login".
Obrigado, att
Marco
Primeiramente, muito bom o artigo!!
Gostaria de uma ajuda, se possível:
Estou tentando ter o acesso via myopenid ou pelo Google, mas estou tendo esse erro do Tomcat:
message: /jm87-SpringSecurity3-CodigoFonte/spring_security_login
description: The requested resource (/jm87-SpringSecurity3-CodigoFonte/spring_security_login) is not available.
E na url consta:
http://localhost:8080/jm87-SpringSecurity3-CodigoFonte/spring_security_login?login_error
Estou executando o projeto pego dos download da revista mesmo, as únicas alterações que fiz é sobre a conexão com o BD. O resto esta funcionando normalmente. Sou levado normalmente para a tela de login (tanto do openID qto do Google), me é informado no log do Tomcat que foi verificado com sucesso, mas parece que não encontra o "spring_security_login".
Obrigado, att
Marco
[há +1 ano] -
Responder
[autor]
José Alexandre Macedo
Olá Marco,
Fico feliz que tenha gostado do artigo!
Com relação ao problema ocorrido, gostaria de saber se você inseriu no banco os dois usuários referentes as contas do myopenid e do google?!
Abraços,
José Alexandre
Fico feliz que tenha gostado do artigo!
Com relação ao problema ocorrido, gostaria de saber se você inseriu no banco os dois usuários referentes as contas do myopenid e do google?!
Abraços,
José Alexandre
[há +1 ano] -
Responder
Marco De Freitas Jr
Olá Jose.
Obrigado pela resposta, e sim, era esse mesmo o problema.
Não estava correto o retorno do openID com os dados do banco.
No caso do login do OPenID, faltou um "/" no final do usuario, por isso dava erro. Depois que vi isso, foi só pegar o usuario retornado do log e inserir exatamente igual no banco (principalmente no caso do Google tb).
Obrigado.
Obrigado pela resposta, e sim, era esse mesmo o problema.
Não estava correto o retorno do openID com os dados do banco.
No caso do login do OPenID, faltou um "/" no final do usuario, por isso dava erro. Depois que vi isso, foi só pegar o usuario retornado do log e inserir exatamente igual no banco (principalmente no caso do Google tb).
Obrigado.
[há +1 ano] -
Responder
Marco De Freitas Jr
Ola novamente!!
José, eu havia inserido os dados retornado do log (9:02:17,140 INFO [STDOUT] 09:02:17,140 INFO [ConsumerManager] Verification succeeded for: https://www.google.com/accounts/o8/id?id=AItOadfgMI5_d71416nGv45278s7w3MPRad5_4uc) com o "link" do id do Google, mas testando hoje esses "links" mudaram, eu achei que eram fixos...Como é feito a validação com o GoogleID então?
Obrigado.
José, eu havia inserido os dados retornado do log (9:02:17,140 INFO [STDOUT] 09:02:17,140 INFO [ConsumerManager] Verification succeeded for: https://www.google.com/accounts/o8/id?id=AItOadfgMI5_d71416nGv45278s7w3MPRad5_4uc) com o "link" do id do Google, mas testando hoje esses "links" mudaram, eu achei que eram fixos...Como é feito a validação com o GoogleID então?
Obrigado.
[há +1 ano] -
Responder
[autor]
José Alexandre Macedo
Olá Marco,
No caso do google você deve inserir o seguinte: http://www.google.com/profiles/USERNAME
Veja se funciona e qualquer coisa me avisa!
Abraços,
José Alexandre
No caso do google você deve inserir o seguinte: http://www.google.com/profiles/USERNAME
Veja se funciona e qualquer coisa me avisa!
Abraços,
José Alexandre
[há +1 ano] -
Responder
Marco De Freitas Jr
Olá Jose.
Então, dessa forma funciona, mas obriga a pessoa a ir criar um profile no google para dar certo (Ex: eu mesmo uso Gmail há anos, mas não tinha esse profile! Tive que criar um para o exemplo funcionar).
Aqui na empresa, usamos o Gmail, então a idéia seria usar o mesmo login na nossa aplicação. Estou fazendo testes com o botao "Sign with Google" comum em vários sites, que usa esse link "https://www.google.com/accounts/o8/id" para autenticação. Ele leva normalmente para o login, mas parece que o retorno do ID muda! Mas tudo bem, por enqto esta dando certo, de qualquer forma obrigado pela ajuda!
Então, dessa forma funciona, mas obriga a pessoa a ir criar um profile no google para dar certo (Ex: eu mesmo uso Gmail há anos, mas não tinha esse profile! Tive que criar um para o exemplo funcionar).
Aqui na empresa, usamos o Gmail, então a idéia seria usar o mesmo login na nossa aplicação. Estou fazendo testes com o botao "Sign with Google" comum em vários sites, que usa esse link "https://www.google.com/accounts/o8/id" para autenticação. Ele leva normalmente para o login, mas parece que o retorno do ID muda! Mas tudo bem, por enqto esta dando certo, de qualquer forma obrigado pela ajuda!
[há +1 ano] -
Responder
Marco De Freitas Jr
Ola novamente José.
Eu gostaria de tirar uma dúvida com você: É possível eu me autenticar pelo OpenID mas sem precisar fazer nenhuma consulta a algum banco? Dessa forma eu evitaria ter que ficar guardando os ID de cada usuario no banco.
Obrigado.
Eu gostaria de tirar uma dúvida com você: É possível eu me autenticar pelo OpenID mas sem precisar fazer nenhuma consulta a algum banco? Dessa forma eu evitaria ter que ficar guardando os ID de cada usuario no banco.
Obrigado.
[há +1 ano] -
Responder
[autor]
José Alexandre Macedo
Olá Marco,
Com relação ao login pelo OpenID do Google, me envie um email que eu vou te passar um pdf com 2 páginas do livro Spring Security 3 que explica como fazer o que você está querendo, é bem simples a alternativa do livro.
Com relação a segunda pergunta, é possível sim, você pode ter os usuários e suas autorizações descritas no arquivo xml de configuração do Spring Security. Existe um exemplo na Java Magazine 69 na página 83, você pode acessá-lo através deste link http://www.devmedia.com.br/websys.2/webreader.asp?cat=6&revista=javamagazine_69#a-1591
Qualquer dúvida estou aí!
Abraços,
José Alexandre
Com relação ao login pelo OpenID do Google, me envie um email que eu vou te passar um pdf com 2 páginas do livro Spring Security 3 que explica como fazer o que você está querendo, é bem simples a alternativa do livro.
Com relação a segunda pergunta, é possível sim, você pode ter os usuários e suas autorizações descritas no arquivo xml de configuração do Spring Security. Existe um exemplo na Java Magazine 69 na página 83, você pode acessá-lo através deste link http://www.devmedia.com.br/websys.2/webreader.asp?cat=6&revista=javamagazine_69#a-1591
Qualquer dúvida estou aí!
Abraços,
José Alexandre
[há +1 ano] -
Responder
Marco De Freitas Jr
Ola Jose.
Te enviei o email então, no Gmail que cadastrado aqui no site.
Obrigado.
Te enviei o email então, no Gmail que cadastrado aqui no site.
Obrigado.
[há +1 ano] -
Responder
Abel Lazuta
Marco, tudo ok até aqui...
Também gostaria que me enviasse o pdf sobre como usar Spring Security com google accounts.
Se possível enviar ao e-mail cadastrado na conta devmedia.
Grato!
Abel
Também gostaria que me enviasse o pdf sobre como usar Spring Security com google accounts.
Se possível enviar ao e-mail cadastrado na conta devmedia.
Grato!
Abel
[há +1 mês] -
Responder
Você está em:
canal Java
José Alexandre Macedo
Space do autor
é Mestrando em Informática na Universidade Federal do Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal de Alfenas.
Space do autor



1
0
