Skip to main content

Autenticação

VSet Chameleon permite que você implemente as regras de autenticação. Para implementar a classe de autenticação, deverá implementar a interface Authentication. Já tem algumas classes já implementadas na biblioteca de autenticação no VSet Chameleon tal como AuthenticationOAuth2Process que implementa a especificação OAuth 2.0.

Nota: Se deseja criar o contexto de sessão na classe de autenticação, deverá herdar a classe BusinessProcessWrapper.

Interface Authentication

MétodoTipoDescrição
authenticate()voidImplementa a regra de negócio propriamente ditaObrigatório
setConfiguration()voidImplementa as configurações referente ao processo de autenticaçãoOpcional

Exemplo

public class Auth implements Authentication {

@Override
public void authenticate() throws Exception {
// any code
}

@Override
public void setConfiguration() throws Exception {
// any code
}
}

Caso deseja criar o contexto de sessão na classe de autenticação

public class Auth extends BusinessProcessWrapper implements Authentication {

@Override
public void authenticate() throws Exception {
}

@Override
public void setConfiguration() throws Exception {
}

// methods inherited from class BusinessProcessWrapper

@Override
public Object getInput() {
return null;
}

@Override
public Object getOutput() {
return null;
}

@Override
public void validate() throws Exception {
}

@Override
public void beforeProcess() throws Exception {

}

@Override
public void process() throws Exception {
}

@Override
public void afterProcess() throws Exception {
}

@Override
public void rollback() throws Exception {
}

@Override
public void cleanVariables() throws Exception {
}
}

Classe AuthenticationOAuth2Process

Autentica de acordo com a especificação OAuth 2.0.

Classe

Exemplo

public class Auth extends AuthenticationOAuth2Process {

@Override
public Object getInput() {
return null;
}

@Override
public Object getOutput() {
return null;
}

@Override
public void validate() throws Exception {
}

@Override
public void authenticate() throws Exception {
}

@Override
public void setConfiguration() throws Exception {
}

}

Estrutura de dados

  • Estrutura de entrada
public class AuthManagerInput {

private String usercode;
@Confidential
private String password;
@Confidential

public String getUsercode() {
return usercode;
}
public void setUsercode(String usercode) {
this.usercode = usercode;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
  • Estrutura de saída

Sempre será retornado os campos access_token, expires_in, scope além dos dados de saída da autenticação.

public class AuthManagerOutput {

private String username;
private Timestamp lastLoginDate;
private boolean firstAccess;
private boolean changePassword;
private boolean registerCompany;
private String photo;
private int companyCurrent;
private PersonaType personaTypeCurrent;
private ChangePasswordMode changePasswordMode;
private String usercode;
private String passport;
private String objectId;
private ArrayList<UserBusinessOrganization> company = new ArrayList<UserBusinessOrganization>();
private ArrayList<UserConfigAuth> config = new ArrayList<UserConfigAuth>();
private ArrayList<Permission> permission = new ArrayList<Permission>();
private ArrayList<BusinessUnitUser> businessUnit = new ArrayList<BusinessUnitUser>();
private ArrayList<UserOrganizationStructure> organizationStructure = new ArrayList<UserOrganizationStructure>();

public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Timestamp getLastLoginDate() {
return lastLoginDate;
}
public void setLastLoginDate(Timestamp lastLoginDate) {
this.lastLoginDate = lastLoginDate;
}
public boolean isFirstAccess() {
return firstAccess;
}
public void setFirstAccess(boolean firstAccess) {
this.firstAccess = firstAccess;
}
public boolean isChangePassword() {
return changePassword;
}
public void setChangePassword(boolean changePassword) {
this.changePassword = changePassword;
}
public boolean isRegisterCompany() {
return registerCompany;
}
public void setRegisterCompany(boolean registerCompany) {
this.registerCompany = registerCompany;
}
public String getPhoto() {
return photo;
}
public void setPhoto(String photo) {
this.photo = photo;
}
public int getCompanyCurrent() {
return companyCurrent;
}
public void setCompanyCurrent(int companyCurrent) {
this.companyCurrent = companyCurrent;
}
public PersonaType getPersonaTypeCurrent() {
return personaTypeCurrent;
}
public void setPersonaTypeCurrent(PersonaType personaTypeCurrent) {
this.personaTypeCurrent = personaTypeCurrent;
}
public ChangePasswordMode getChangePasswordMode() {
return changePasswordMode;
}
public void setChangePasswordMode(ChangePasswordMode changePasswordMode) {
this.changePasswordMode = changePasswordMode;
}
public String getUsercode() {
return usercode;
}
public void setUsercode(String usercode) {
this.usercode = usercode;
}
public String getPassport() {
return passport;
}
public void setPassport(String passport) {
this.passport = passport;
}
public String getObjectId() {
return objectId;
}
public void setObjectId(String objectId) {
this.objectId = objectId;
}
public ArrayList<UserBusinessOrganization> getCompany() {
return company;
}
public ArrayList<UserConfigAuth> getConfig() {
return config;
}
public ArrayList<Permission> getPermission() {
return permission;
}
public ArrayList<BusinessUnitUser> getBusinessUnit() {
return businessUnit;
}
public ArrayList<UserOrganizationStructure> getOrganizationStructure() {
return organizationStructure;
}
public void setOrganizationStructure(
ArrayList<UserOrganizationStructure> organizationStructure) {
this.organizationStructure = organizationStructure;
}

}
  • Classe AuthManager
@BusinessProcessName(name="AuthManager", description="Authentication Manager", channel=true)
public class AuthManager extends AuthenticationOAuth2Process {

private AuthManagerInput input = new AuthManagerInput();
private AuthManagerOutput output = new AuthManagerOutput();

@Override
public AuthManagerInput getInput() {
return input;
}

@Override
public AuthManagerOutput getOutput() {
return output;
}

@Override
public void authenticate() throws Exception {

// any code
}

@Override
public void setConfiguration() throws Exception {
super.setConfiguration();
setExpires(0);
setUsercode(input.getUsercode());
}
}

Exemplo da mensagem de resposta após da autenticação formato json com os dados access_token, expires_in, scope e da estrutura acima.

{"token_type":"bearer","expires_in":0,"scope":"","access_token":"jWNgrnShV4KRxHr5fyXjhxzQuDZw2ivSPbh8HnTjEgc+H1j84zo/R5aBQx8WetPWaeQwkOGfI0plRgL380Ph9ioq-FOOdMdP7U8kAnfTmF75RpWxAn6Ec7P0Jxil4PfQaNHB52n5mpeWJjA+a85TQxyQgx13Kby+5roHBS1adCsNa6j/pA0DHO7UkljfV2EaW11gq-g7Q1y6+6GqJCPEosZ296FC/d/bGyGpo1Q7fYEn2qq3gJAqMnXyBm3Ljh5mK2XDKaUonjX3RvIWOFf09/AXJQnG2uWMnjFNo5kN3Ut1eEmehvAw7SlhpBmZ8GmjbpgwJV4mibsBdLWAqsHJddIP3YPxl7BA3PIG/C9c60c5rsCSZt+TicxuG26HkSXC6J8OnIHmetSXDDYbqehvJyLQPRCBI7Ohon57i0czYJKhpKqogXtkr6x63tgrjypY0M7XFw8jxV29r22JFefwyuFgBn59zQYulE2+gVuyNWCzETkPqZI+tqp8OPshbA4IpPsi57Ch2Kd6Aka/Bx8kZdZZt0qzI3thwkf3aT0vEdeX5lmFM4kgNFxQUOAIdf24mwO2cpARL3zYvhTTZChm5+DUvKEyoq","timestamp":"2019-01-11T12:36:47-0300","transactionView": [], "username":"Fulano Beltrano","lastLoginDate":"","firstAccess":false,"changePassword":false,"registerCompany":false,"photo":"/image/U5tN2xN2tK0jY6dI7tF0nF7xX8sA0sA3rQ2b.jpg","companyCurrent":0,"personaTypeCurrent":"","changePasswordMode":"2","usercode":"22256278487","passport":"","objectId":"","company": [],"config": [],"permission": [],"businessUnit": [{"id":13414,"name":""},{"id":13434,"name":"GIOVANA E LEVI MARCENARIA ME"},{"id":13447,"name":""},{"id":14374,"name":""},{"id":14375,"name":"LOJAS ITALOAMERICANAS"},{"id":14378,"name":""},{"id":16456,"name":"TESTE DE EMPRESA"}],"organizationStructure": [{"idOrganizationStructure":2012,"organizationStructureType":"1","role":null,"email":"","phone":"","structureDefault":true,"lastUpdateDate":"2018-09-15T00:00:00-0300","structureName":"Organizacao Varejo","idBusinessOrganization":2012}]}

O atributo access_token será o token bearer para executar as transações disponíveis para usuário autenticado.

Fluxo do processo de autenticação (protocolo HTTP(S))

Como funciona o processo de autenticação para obter os serviços disponibilizados pelo módulos?

Todos canais ou parceiros devem possuir um client-id e um secret-key para obtenção dos serviços disponibilizados pelos módulos por meio do processo de autenticação.

Toda requisição de autenticação é necessária passar o header authorization: basic Base64(client-id:secret-key) para receber token (access_token) que será utilizado para as requisições da APIs de serviços disponibilizados pelo módulos.

As requisiçoes de serviços disponibilizados pelo módulos, exceto autenticação, deverão passar o header authorization: bearer access_token recebido no processo de autenticação para receber os serviços requisitados.

FAQ (Frequently Asked Questions)