46
Fabio Velloso [email protected] Segurança para serviços REST, Redes Sociais e Web 2.0

Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

  • Upload
    hathuan

  • View
    223

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

Fabio [email protected]

Segurança para serviços REST, Redes Sociais e Web 2.0

Page 2: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

2

Fabio Velloso

Bacharel em Ciência da Computação pela Universidade Federal de São Carlos-UFSCar Fundador do SouJava Desenvolvendo projetos com tecnologia Java desde 96 Professor de SOA e Web Services do curso de Pós-Graduação "Lato-Sensu" em Desenvolvimento de Software para Web da UFSCar Arquiteto de Sistemas na Telefonica

Page 3: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

3

Agenda

Introdução

REST e WS

Segurança Web

OAuth, Redes Sociais e REST

OpenID

OpenPTK

Page 4: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

4

Como implementar segurança para serviços REST, HyperMidia e Redes Sociais

Page 5: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

5

Web Services SOAP

Protocolo SOAP sobre HTTP

WSDL

UDDI

Protocolos de segurança WS-*

REST

Paradigma mais novo

Simples

Recursos

Segurança???

Web Services

Page 6: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

6

WS-Security XML Signature XML Encryption XML Key Management (XKMS) WS-SecureConversation WS-SecurityPolicy WS-Trust WS-Federation WS-Federation Active Requestor Profile WS-Federation Passive Requestor Profile Web Services Security Kerberos Binding Web Single Sign-On Interoperability Profile Web Single Sign-On Metadata Exchange Protocol Security Assertion Markup Language (SAML) XACML

Web Services Security (SOAP)

Page 7: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

7

Paradigma simples para Web Services Acrônimo para Representational State Transfer Não é um padrão É um estilo de Arquitetura de Software “Um conjunto de regras de design que

identificam os tipos de componentes e conectores que podem ser usados para compor um sistema ou subsistema”

RESTful Web Services

Page 8: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

8

Recursos são acessíveis e identificados por URI

URI parameters

/users/{user-id}

http://soujava.org.br/users/323421

Conjunto uniforme de operações padronizadas

Query parameters para localizar outros recursos

http://soujava.org.br/users?id=02115

JAX-RS - Java API for RESTful Web Services

Framework com anotações para RESTful Web Services

Anotações que encapsulam métodos e parâmetros HTTP

Jersey implementação de referência

Suporte a mecanismos de autenticação

HTTPBasicAuthFilter, HTTPDigestAuthFilter

RESTful Web Services

Page 9: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

9

JAX-RS - @GET, @POST, @DELETE

@Path("/library") public class Library { @GET @Path("/books") public String getBooks() {...} @GET @Path("/book/{isbn}") public String getBook(@PathParam("isbn") String id) {..}

@DELETE @Path("/book/{id}") public void removeBook(@PathParam("id") String id) {...} }

Page 10: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

10

Web como plataforma para sistemas distribuídos

Pensar em Recursos

“Resource-Oriented”

Recurso pode ser qualquer coisa exposta na Web:

Video,Imagens, Documentos

URI referenciando recursos

java.net

www.java.net “Hypermedia as the engine of application state” Redes Sociais

Segurança já disponível para Web

Page 11: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

11

Basic authentication

Usuário e senha no Header HTTP, sem criptografia

User:password

Base 64

GET /areaprivada/index.html HTTP/1.1Host: localhostAuthorization: Basic QwxhZATpbjpvcGVuIHNlc2FeOP==

Uso de SSL

Page 12: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

12

Basic authentication

Java EE Security

@RolesAllowedAcesso permitido a usuários com papel adequado

Exemplo:

@GET

@Path("/Secure")

@RolesAllowed("admin")

@Produces("text/plain")

public String getMessage(@Context HttpHeaders headers){

return "Olá JavaOne Brasil";

}

Page 13: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

13

Basic authentication

web.xml

<login-config>

<auth-method>BASIC</auth-method>

<realm-name>Test</realm-name>

</login-config>

<security-role>

<role-name>admin</role-name>

</security-role>

<security-role>

<role-name>user</role-name>

</security-role>

tomcat-users.xml

<user password="fabio" roles="manager,admin" username="fabio"/>

<user password="tomcat" roles="manager,admin" username="tomcat"/>

Page 14: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

14

Basic authentication

Base 64

private String getCredentials(HttpHeaders headers) {

String authorization = headers.getRequestHeader("authorization").get(0);

authorization = authorization.substring("Basic ".length());

String[] data = new String(Base64.base64Decode(authorization)).split(":");

String username = data[0];

String password = data[1];

}

Page 15: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

15

Basic authentication

Problemas:

Não é criptografia

Sem integridade

Sem confidencialidade

Senhas trafegando pela rede

Chave compartilhada

Controle de acesso fraco

Log e auditoria de acesso dificultada

Digest e SSL

Mecanismos de delegação

Page 16: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

16

OAuth

Protocolo aberto para permitir a autorização usando uma API segura, simples e padronizada para aplicativos desktop e web

Compartilhar dados (recursos), com vários usuários, sem compartilhar sua identidade

RFC 5849 – OAuth v1.0 - Internet Engineering Task Force

Possibilita proteção de acesso a recursos Web

Facebook, Twitter, Linkedin, SalesForce

Token e Secret para acesso a aplicação/recurso

Token de requisição e Token de acesso

Token pode ser revogado a qualquer momento

Autorização para cada request facilita log e auditoria

Page 17: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

17

OAuth – Entidades

Service ProviderProvedor do recurso protegido

ConsumerA aplicação que requisita acesso a um recurso protegido

Resource OwnerO proprietário do recurso protegido hospedado no servidor.Controla e aprova acesso

Page 18: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

18

Page 19: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

19

OAuth Token e CallBack

Page 20: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

20

Jersey e OAuth

Suporte ao protocolo v1.0a Módulos maven oauth-client-{version}.jar

Filtro para anexar OAuth Header nas requisições oauth-server-{version}.jar

Geração e tratamento de Tokens oauth-signature-{version}.jar

Suporte a assinaturas OauthHMAC_SHA1, PLAINTEXT, RSA_SHA1

Projetos com NetBeans e Maven Adicionar dependências

GroupId: com.sun.jersey.contribs.jersey-oauthArtifactId: oauth-server Version: ${jersey-version}

Page 21: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

21

Jersey e OAuth

OAuthSecrets OAuth secrets a serem utilizados na assinatura das requisições

OAuthParametersParâmetros utilizados nas requisiçõesChave da aplicação/usuário (CONSUMER_KEY)Método de assinatura ("HMAC-SHA1")Versão

ClientCliente que acessa serviço/recurso

OAuthClientFilterAssina os requests com assinatura OAuthAdiciona um Header com os parametros OAuth

Page 22: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

22

OAuth Request Token

https://site_destino/oauth/requestToken

Exemplo:

– https://api.linkedin.com/uas/oauth/requestToken

authorization OAuth oauth_nonce="a912e229-2488-4a69-ad31-7f3cc7390cd4",

oauth_callback="http%3A%2F%2Flocalhost%2Foauth_callback",oauth_consumer_key="c6z48v4MU1QBCpm6R9XshNfVVWmV3RzgwoZFZ9F", oauth_signature_method="HMAC-SHA1",

oauth_version="1.0", oauth_signature="TXJwbUzeX%2BvWTZqenVGSxvdmB83D",

oauth_timestamp="1291596497"

Adiciona um único Header HTTP chamado authorization

Page 23: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

23

OAuth Request Token

OAuthSecrets oAuthSecrets = new OAuthSecrets().consumerSecret(Definitions.CONSUMER_SECRET);

OAuthParameters oAuthParams = new OAuthParameters().consumerKey(Definitions.CONSUMER_KEY).

signatureMethod("HMAC-SHA1").version("1.0");

client.addFilter( new OAuthClientFilter(client.getProviders(), oAuthParams, oAuthSecrets));

Form response = client.resource(Definitions.REQUEST_TOKEN_URL).post(Form.class);

Define OAuthSecret e OAuthParameterscom os valores gerados pelo

servidor dos recursos

Assina o request Assina o request com assinatura OAuth Adiciona o Header “authorization”

com os parâmetros OAuth

Executa POST para pedir RequestToken

Page 24: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

24

OAuth Authorize URL

https://site_destino/oauth/authorize

Exemplo:

https://www.linkedin.com/uas/oauth/authorize?

oauth_token=6451ca51-6a82-410e-a3f3-f7d837d856fc

Retorno para callback url definida

Aplicação

Conta

Data de Acesso

Page 25: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

25

OAuth Authorize URL

Form response = client.resource(Definitions.REQUEST_TOKEN_URL).post(Form.class);

Definitions.setToken(response.getFirst(OAuthParameters.TOKEN),

response.getFirst(OAuthParameters.TOKEN_SECRET), false);

Response.seeOther(UriBuilder.fromPath(Definitions.AUTHORIZE_URL).

queryParam(OAuthParameters.TOKEN, response.getFirst(OAuthParameters.TOKEN)).build()).build();

POST executado para pedir um RequestToken

Armazena os valores de Retornados (RequestToken e TokenSecret)

RequestToken“oauth_token”

Redireciona Para página deAutorização doServiço

Page 26: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

26

OAuth Access Token

https://site_destino/oauth/accessToken

Exemplo:https://api.linkedin.com/uas/oauth/accessToken

Authorization: OAuth oauth_nonce="wm2h9DH3Njoe62ezioNQS0qPfD11MH4w4paJufkk", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1259178208", oauth_consumer_key="ABCDEFGHIJKLMNOPQRSTUVQXYZ", oauth_token="94ab03c4-ae2c-45e4-8732-0e6c4899db63", oauth_verifier="27871", oauth_signature="srWAOowk6Tk4irC9pEMUa7Tx%2BBc%3D", oauth_version="1.0"

Page 27: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

27

OAuth Access Token

OAuthSecrets oAuthSecrets = new OAuthSecrets().consumerSecret(Definitions.CONSUMER_SECRET).

tokenSecret(Definitions.getTokenSecret());

OAuthParameters oAuthParams = new OauthParameters().consumerKey(Definitions.CONSUMER_KEY).

token(Definitions.getToken()).signatureMethod("HMAC-SHA1").version("1.0").verifier(verifier);

client.addFilter(new OAuthClientFilter(client.getProviders(), oAuthParams, oAuthSecrets));

Form response = client.resource(Definitions.ACCESS_TOKEN_URL).post(Form.class);

Definitions.setToken(response.getFirst(OAuthParameters.TOKEN),

response.getFirst(OAuthParameters.TOKEN_SECRET), true);

return Response.seeOther(UriBuilder.fromResource(ShowResource.class).build()).build();

RequestTokenSetado

no passo anterior

Retorna paraClasse/método que

ira acessar o recurso

Armazena os valores retornados (AccessToken e TokenSecret)

Define OAuthSecret e OAuthParameterscom os valores gerados pelo

servidor dos recursos

Código de verificação

associado ao RequestToken

Page 28: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

28

OAuth - Acessar Recurso

Client client = Client.create();OAuthSecrets oAuthSecrets = new OAuthSecrets().consumerSecret(Definitions.CONSUMER_SECRET)

.tokenSecret(Definitions.getTokenSecret());OAuthParameters oAuthParams = new OAuthParameters().consumerKey(Definitions.CONSUMER_KEY)

.token(Definitions.getToken()).signatureMethod("HMAC-SHA1").version("1.0");

client.addFilter(new OAuthClientFilter(client.getProviders(), oAuthParams, oAuthSecrets));ClientResponse response = client.resource(SettingsBack.URL).get(ClientResponse.class);

Requisição

Authorization: OAuth oauth_nonce="LpggMEZQYFkdTmrw0OixdZLMc6DdjNWDywsIULxVRwo", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1259182582", oauth_consumer_key="ABCDEFGHIJKLMNOPQRSTUVQXYZ", oauth_token="f862f658-ad89-4fcb-995b-7a4c50554ff6", oauth_signature="udXNypHc%2BbaM0FP1xRdXeyKI2%2Fo%3D", oauth_version="1.0"

Assina o request com assinatura OAuth Adiciona o Header

“authorization” com os parâmetros OAuth

Define OAuthSecret e OAuthParameterscom os valores gerados pelo

servidor dos recursos

AccessToken armazenadono passo anterior

ClienteResponse com dados dorecurso acessado

Page 29: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

29

OAuth

Page 30: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

30

OAuth Server – Gerar Tokens

DefaultOAuthProvider defaultOAuth = new DefaultOAuthProvider();

Consumer registerConsumer = defaultOAuth.registerConsumer("owner", attributes);

String CONSUMER_KEY = registerConsumer.getKey();

String CONSUMER_SECRET = registerConsumer.getSecret();

Armazenar dados

Relacionar CONSUMER_KEY a aplicação

MultivaluedMap com informações adicionais sobre o consumidorNome, URI, Descrição...

Page 31: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

31

OAuth Server – RequestToken

@Path("/requestToken")

public class RequestTokenResource {@POST@Produces(MediaType.APPLICATION_FORM_URLENCODED) public javax.ws.rs.core.Response getHtml(@HeaderParam("authorization") String authorization) {

MultivaluedMap<java.lang.String, java.lang.String> attributes;

// obter do Header authorization "oauth_consumer_key"

// Validar se Consumer_Key existe, validar hash

OAuthToken requestToken = defaultOAuth.newRequestToken(oauth_consumer_key, callbackUrl, attributes);

String ret = OAuthParameters.TOKEN+"="+requestToken.getToken() +"&"+OAuthParameters.TOKEN_SECRET+"="+requestToken.getSecret();

return Response.ok(ret).build();

• Autorizar acesso no serviço (Owner logado)

Header com os parametros OAuth

Header com os parametros OAuth

Token e TokenSecretno corpo da

resposta

Geração do RequestToken

Parâmetros para Indicar nível de

acesso por exemplo.Read, ReadWrite

Page 32: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

32

OAuth Server – AccessToken

@Path("/accessToken")

public class AccessTokenResource {@POST@Produces(MediaType.APPLICATION_FORM_URLENCODED) public javax.ws.rs.core.Response getHtml(@HeaderParam("authorization") String authorization) {

// obter do Header authorization “oauth_token”// Validar se Consumer_Key existe, validar hash

OAuthToken accessToken = defaultOAuth.newAccessToken(oauth_token, defaultOAuth.authorizeToken(oauth_token, userPrincipal, roles));

string ret = OAuthParameters.TOKEN+"="+accessToken.getToken() +"&"+OAuthParameters.TOKEN_SECRET+"="+accessToken.getSecret(); return Response.ok(ret).build();

Header com os parametros OAuth

Header com os parametros OAuth

Token e TokenSecretno corpo da resposta

Geração do AccessToken

Principal identificando o owner einformações adicionais sobre

o consumer:URI, nome e descriçãoVerifierPara

CallbackURL

Page 33: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

33

Protegendo o recurso

Validar tokens e assinaturas no recursoAcopla lógica de negócio com autorização

Usar @ResourceFiltersDefine a lista de filtros associadas com o recursoResourceFilters é um singletonAplicável a classe ou métodoFiltros precisam implementar ResourceFilter

@DELETE @Path("/book/{id}")@ResourceFilters(value = {OAuthAuthorizationRequiredFilter.class,

OAuthAccessTokenRequiredFilter.class,OAuthNonceFilter.class})

public Response recursoProtegido {.....}

Page 34: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

34

Filtro para o recurso

public class OAuthAccessTokenRequiredFilter implements ResourceFilter {

@Override public ContainerRequestFilter getRequestFilter() { return new ContainerRequestFilter() {

public ContainerRequest filter(ContainerRequest cr) { HashMap<String, String> oauthValues =

OauthHeaderHelper.extractOauthParamsFromAuthorizationHeader( cr.getHeaderValue(′′Authorization′′));

if(!oauthValues.containsKey(′′oauth_token′′)) { throw new WebApplicationException( Response.status(Status.UNAUTHORIZED) .

type(MediaType.TEXT_PLAIN) .entity(′′No oauth_token in request.′′).build());}

} return cr; } };}

Page 35: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

35

OAuth 2

DRAFT - Abril 2010 Especificação final prevista para o final do ano OAuth Web Resource Authorization Protocol (WRAP) foi base Incompativel com OAuth 1.0 Torna obsoleta a especificação OAuth 1.0 Suporte parcial no Facebook e Twitter Facebook Graph API e Twitter com suporte parcial Processo simplificado sem RequestToken Sem assinatura OAuth

SSL Sem Token Secret

Page 36: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

36

OpenID

Protocolo que possibilita o armazenamento de IDs ou credenciais (usuário e senha) em um repositório centralizado

Compartilha com um ou mais consumidores

Provider responsável por autenticar e informar consumidores

Suportado por Google, Yahoo!, Flickr, Facebook, Verisign

OpenID providers - Google, Yahoo e AOL

OpenID

Compartilhar uma identidade com diferentes consumidores

OAuth

Compartilhar dados (recursos), com vários usuários, sem compartilhar sua identidade

Podem trabalhar em conjunto

Page 37: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

37

OpenPTK

Open Source User Provisioning Toolkit

Gerenciamento de usuários com interface Web Services (REST e SOAP), Portlets, Taglibs e APIs

Suporta vários repositórios de identidade

LDAP

Banco de Dados

Autenticação e autorização na versão 2.0 (em desenvolvimento)

Configuração em arquivos XML

https://openptk.dev.java.net/

Page 38: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

38

OpenPTK

Page 39: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

39

OpenPTK - Autorização

1 - Request

Session/Principal:Principal com usuário

Operation: CREATE, READ, UPDATE, DELETE, etc.

Target ou Resource: URI a ser acessada

2 - Enforcer - ServletFilter que processa o Request

3 - Decider – Avalia o direito de acesso baseado nas políticas e retorna true ou false

4 – Policies – políticas de acesso utilizadas pelo Decider

Page 40: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

40

OpenPTK - Configuração

<Policy id="System" environment="ENGINE" mode="inbound" effect="allow"> <Properties> <Property name="policy.description" value="System user access"/> </Properties> <Session> <Types> <Type id="SYSTEM"/> </Types> </Session> <Targets> <Target id="contexts" uri="/resources/contexts/*"> <Operations> <Operation id="CREATE"/> <Operation id="READ"/> <Operation id="UPDATE"/> <Operation id="DELETE"/> <Operation id="SEARCH"/> </Operations> </Target> <Target id="engine" uri="/resources/engine/*"> <Operations> <Operation id="READ"/> </Operations> </Target> </Targets></Policy>

Habilita usuários SYSTEM a executar todas

operações em contexts

Habilita usuários SYSTEM a executar leitura

em engine

Page 41: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

41

Conclusão

Frameworks e API's para recursos Web OAuth para autenticação OpenID para identificação na rede

OAuth possibilita compartilhar dados (recursos), com vários usuários, sem compartilhar sua identidade

Versão 1.0 disponível em APIs e serviços como FaceBook, Linkedin, Twitter

Especifição OAuth 2.0 draft

Facebook Graph API e Twitter com suporte parcial

OpenPTK para provisionar usuários

Page 42: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

42

Obrigado

Perguntas???

Page 43: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

43

Palestra

www.fabiovelloso.com.br/palestras/javaonebr2010.pdf

Código exemplo

www.fabiovelloso.com.br/palestras/rest-sec-j1br.zip

Email

[email protected]• Twitter

@fabiovelloso

Page 44: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

44

Transforme seu processo em Rest com JAX-RS Horário: 14:00 - 14:45 Sala: Auditório 5

Segurança e insegurança em aplicações Internet Java EE

Horário: 15:00 - 15:45

Sala: Auditório 4

Servlet 3.0 – Expansível, Assíncrono e Fácil de Usar

Horário: 16:15 - 17:00 Sala: Auditório 1

Sessões relacionadas

Page 45: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

45

Page 46: Segurança para serviços REST, Redes Sociais e Web 2 · Conta Data de Acesso. 25 OAuth ... Provider responsável por autenticar e informar consumidores Suportado por Google, Yahoo!,

46

OpenID