Exemplos
Exemplos de integração e amostras de código
Casos de Uso Comuns
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.
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.
Integração SaaS
Autenticação federada com provedores de serviços cloud.
Conectando identidade corporativa ao Salesforce, Google Workspace, Microsoft 365.
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