Histórico da Página
...
Para acessar com segurança recursos e serviços externos ao fluig à partir de processos de workflow (que podem ser encontrados aqui) ou customizações, pode-se utilizar a funcionalidade do Authorize Client no Fluig. Essa funcionalidade consiste em um cadastro de configurações de acesso e segurança do serviço externo a ser invocado, ou seja, para cada caso de protocolo de segurança sendo OAuth 1, OAuth 2 ou Basic Authentication, serão informados e cadastrados os token's de acesso, chaves, usuário, senha, etc.
...
Dependendo do client de serviço a ser cadastrado, pode-se utilizar mecanismos de autenticação distintos, como OAuth 1, OAuth 2 ou Basic Authentication, para cada caso serão obrigatórias informações específicas para cada protocolo.
Cadastro de client com autorização OAuth 1, informar os campos:
- Código do Serviço (Obrigatório)
- Domínio (Obrigatório)
- Tipo de Autenticação (Obrigatório)
- Consumer Key (Obrigatório)
- Consumer Secret (Obrigatório)
- Access Token (Obrigatório)
- Secret Token (Obrigatório)
- URL para o Access Token (Obrigatório)
- URL para o Request Token (Obrigatório)
- URL para Autorização (Obrigatório)
- URL GET para test da autenticação do serviço (Opcional)
Cadastro de client com autorização OAuth 2, informar os campos:
- Código do Serviço (Obrigatório)
- Domínio (Obrigatório)
- Tipo de Autenticação (Obrigatório)
- Usuário (Obrigatório)
- Senha (Obrigatório)
- Confirmação da Senha (Obrigatório)
- Id Cliente (Obrigatório)
- Client Secret
- Refresh Token
- Tipo de Permissão
- Token de Acesso
- Escopo
- URL de redirecionamento
- URL refresh token
- URL GET para test da autenticação do serviço (Opcional)
Cadastro de client com autorização Basic Authentication, informar os campos:
- Código do Serviço (Obrigatório)
- Domínio (Obrigatório)
- Tipo de Autenticação (Obrigatório)
- Usuário (Obrigatório)
- Senha (Obrigatório)
- Confirmação da Senha (Obrigatório)
- URL GET para test da autenticação do serviço (Opcional)
Consumindo um serviço no componente SDK
Para utilizar o recursos do componente SDK, existem alguns pré-requisitos e exigências a serem seguidos, como:
- Incluir as configurações do servidor do nexus no Maven para realizar o download de artefatos de dependência. (settings.xml)
Bloco de código | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>Fluig Nexus Repository.</name>
<url>http://nexus.fluig.com/content/groups/public</url>
</mirror>
</mirrors>
</settings> |
- Configurar o componente fluig-sdk-api no classpath.
- No caso de criação de um novo projeto WEB ou Widget, seguir o seguinte padrão de projeto Maven fluigsdk.sample.
- O novo projeto Maven deve ter por padrão as seguintes configurações no pom.xml:
Bloco de código | ||||
---|---|---|---|---|
| ||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.fluig</groupId>
<artifactId>fluig-sdk-bom</artifactId>
<version>1.5.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.fluig</groupId>
<artifactId>foundation-security-authentication-saml</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fluig</groupId>
<artifactId>fluig-sdk-api</artifactId>
</dependency>
<dependency>
<groupId>com.fluig</groupId>
<artifactId>fluig-sdk-common</artifactId>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>fluigsdk.sample</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
<failOnMissingWebXml>false</failOnMissingWebXml>
<archive>
<manifestEntries>
<Dependencies>org.slf4j, com.fluig.api, com.fluig.api.common</Dependencies>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project> |
- Se atentar para as configurações padrão de autenticação e security-role localizadas no jboss-web.xml e web.xml conforme abaixo:
jboss-web.xml
Bloco de código | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<context-root>/sample</context-root>
<disable-cross-context>false</disable-cross-context>
<security-domain>TOTVSTech</security-domain>
<security-role>
<role-name>user</role-name>
<principal-name>totvstech</principal-name>
</security-role>
<security-role>
<role-name>totvstech</role-name>
<principal-name>totvstech</principal-name>
</security-role>
<security-role>
<role-name>sysadmin</role-name>
<principal-name>wcmadmin</principal-name>
</security-role>
<security-role>
<role-name>admin</role-name>
<principal-name>wcmadmin</principal-name>
</security-role>
<valve>
<class-name>com.totvs.technology.auth.saml.TOTVSAuthenticatorValve</class-name>
</valve>
</jboss-web> |
web.xml
Bloco de código | ||||
---|---|---|---|---|
| ||||
<security-role>
<role-name>totvstech</role-name>
</security-role>
<security-role>
<role-name>user</role-name>
</security-role>
<security-role>
<role-name>sysadmin</role-name>
</security-role> |
- Realizar lookup do serviço via ServiceLocator. Seguir padrão da Super Classe FluigAPI.
Serviços disponíveis no componente SDK
Testando configurações de Autorização do Client cadastrado.
Após o cadastro do Client, é possível testar as configurações de acesso utilizando o endpoint GET cadastrado. Basta selecionar o client e clicar no link Testar Serviço na pagina principal da funcionalidade.
Consumindo o Serviço com autenticação OAuth 1, OAuth 2, Basic Authentication.
Chamada via javascript
Para consumo do serviço à partir de um processo de workflow (que podem ser encontrados aqui) e customização deve ser informado os seguintes parâmetros no javascript.
Nota title Como montar os parâmetros Para envio dos parâmetros no JSON, é obrigatório utilizar o nome das chaves conforme descrito abaixo.
- serviceCode (Chave única cadastrada)
- endopint (endpoint que será chamado)
- method (método http do serviço)
- params (parametros em formato JSON para envio ao serviço)
Exemplo de criação de usuário pela API do Fluig e utilizando autorização OAuth 1.
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
var clientService = fluigAPI.getAuthorizeClientService();
var data = {
serviceCode : 'bamboo',
endpoint : '/api/public/2.0/users/create',
method : 'post',
params : {
login : 'authorize.client',
email : '[email protected]',
code : 'authorize.client',
firstName : 'authorize',
lastName : 'client',
fullName : 'authorize client',
password : '123',
extData :{
'addicional-data':'123456'
}
}
}
clientService.invoke(JSON.stringify(data));
|
Chamada via componente SDK
O recurso para consumo do serviço externo também está disponível no componente SDK através do AuthorizeClientSdkService
Exemplo para instanciar serviço do SDK
Veja a seguir o exemplo para a chamado ao serviço no SDK:
Bloco de código | ||||
---|---|---|---|---|
| ||||
private UserService getUserServiceSDKgetAuthorizeClientSdkService() throws SDKException { return new FluigAPI().getUserService(); } |
Consumindo um serviço do componente SDK a partir de eventos de javascript
Informações | ||
---|---|---|
| ||
Este recurso está disponível para eventos javascript de Workflow (que podem ser encontrados aqui) e também para Eventos de Personalização Social (que podem ser encontrados aqui). |
Exemplos para utilização do componente SDK via eventos de javascript
Exemplo 1
Bloco de código | ||||
---|---|---|---|---|
| ||||
function beforeTaskCreate(colleagueId){
log.info(fluigAPI.getUserService().getCurrent());
} |
Exemplo 2
Bloco de código | ||||
---|---|---|---|---|
| ||||
function beforeStateEntry(sequenceId) {
if (sequenceId == 4) {
var groupService = fluigAPI.getGroupService();
var cardData = hAPI.getCardData(getValue("WKNumProces"));
var groupId = hAPI.getCardValue("groupId");
var users = new java.util.ArrayList();
var it = cardData.keySet().iterator();
while(it.hasNext()) {
var field = it.next();
if (field.startsWith("userName__")) {
var user = cardData.get(field);
if (!groupService.containsUser(groupId, user)) {
users.add(user);
}
}
}
if (!users.isEmpty()) {
groupService.addUsers(groupId, users);
}
}
} |
Informações | ||
---|---|---|
| ||
Veja também o exemplo de uma aplicação web utilizando o fluig SDK através do artefato fluig-sdk-api. Diponível no git.fluig. |
Cadastro de client com autorização OAuth 1, informar os campos:
...
- Código do Serviço (Obrigatório)
- Domínio (Obrigatório)
- Tipo de Autenticação (Obrigatório)
- Consumer Key (Obrigatório)
- Consumer Secret (Obrigatório)
- Access Token (Obrigatório)
- Secret Token (Obrigatório)
- URL para o Access Token (Obrigatório)
- URL para o Request Token (Obrigatório)
- URL para Autorização (Obrigatório)
- URL GET para test da autenticação do serviço (Opcional)
getAuthorizeClientSdkService();
} |
...