Skip to main content

Exemplos

Exemplos de integração e amostras de código

Casos de Uso Comuns

building-2building-2

SSO Empresarial

Single Sign-On para múltiplas aplicações internas usando SAML 2.0.

Grande organização com múltiplas aplicações web precisando de autenticação centralizada.

keykey

Autenticação de App Mobile

Integração OAuth 2.0 / OpenID Connect para aplicações mobile.

Apps mobile requerendo autenticação segura baseada em token com refresh tokens.

cloudcloud

Integração SaaS

Autenticação federada com provedores de serviços cloud.

Conectando identidade corporativa ao Salesforce, Google Workspace, Microsoft 365.

shieldshield

Proteção de API Gateway

Protegendo APIs com validação de token OAuth 2.0.

Arquitetura de microserviços requerendo autenticação de API centralizada.

Exemplo SAML 2.0 Service Provider

Configure um SAML 2.0 Service Provider para sua aplicação:

<!-- SAML SP Metadata -->
<EntityDescriptor entityID="https://app.example.com/saml/metadata"
  xmlns="urn:oasis:names:tc:SAML:2.0:metadata">
  <SPSSODescriptor
    AuthnRequestsSigned="true"
    WantAssertionsSigned="true"
    protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">

    <NameIDFormat>
      urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
    </NameIDFormat>

    <AssertionConsumerService
      Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
      Location="https://app.example.com/saml/acs"
      index="0"/>

    <SingleLogoutService
      Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
      Location="https://app.example.com/saml/slo"/>
  </SPSSODescriptor>
</EntityDescriptor>

Exemplo OAuth 2.0 / OpenID Connect

Authorization Code Flow (com PKCE)

// Step 1: Generate code verifier and challenge
const codeVerifier = generateRandomString(128);
const codeChallenge = base64UrlEncode(sha256(codeVerifier));

// Step 2: Redirect to authorization endpoint
const authUrl = new URL('https://idp.example.com/josso/oauth2/authorize');
authUrl.searchParams.set('client_id', 'your-client-id');
authUrl.searchParams.set('redirect_uri', 'https://app.example.com/callback');
authUrl.searchParams.set('response_type', 'code');
authUrl.searchParams.set('scope', 'openid profile email');
authUrl.searchParams.set('code_challenge', codeChallenge);
authUrl.searchParams.set('code_challenge_method', 'S256');

window.location.href = authUrl.toString();

Troca de Token

// Step 3: Exchange code for tokens
const tokenResponse = await fetch('https://idp.example.com/josso/oauth2/token', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
  },
  body: new URLSearchParams({
    grant_type: 'authorization_code',
    client_id: 'your-client-id',
    code: authorizationCode,
    redirect_uri: 'https://app.example.com/callback',
    code_verifier: codeVerifier,
  }),
});

const { access_token, id_token, refresh_token } = await tokenResponse.json();

Integração Java Spring Boot

Configure Spring Security com JOSSO como provedor OIDC:

# application.yml
spring:
  security:
    oauth2:
      client:
        registration:
          josso:
            client-id: your-client-id
            client-secret: your-client-secret
            scope: openid,profile,email
            authorization-grant-type: authorization_code
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
        provider:
          josso:
            issuer-uri: https://idp.example.com/josso
            authorization-uri: https://idp.example.com/josso/oauth2/authorize
            token-uri: https://idp.example.com/josso/oauth2/token
            user-info-uri: https://idp.example.com/josso/oauth2/userinfo
            jwk-set-uri: https://idp.example.com/josso/oauth2/jwks