Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

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:
     

    1. Código do Serviço (Obrigatório)
    2. Domínio (Obrigatório)
    3. Tipo de Autenticação (Obrigatório)
    4. Consumer Key (Obrigatório)
    5. Consumer Secret (Obrigatório)
    6. Access Token (Obrigatório)
    7. Secret Token (Obrigatório)
    8. URL para o Access Token (Obrigatório)
    9. URL para o Request Token (Obrigatório)
    10. URL para Autorização (Obrigatório)
    11. URL GET para test da autenticação do serviço (Opcional)
    Image ModifiedImage Modified
  • Cadastro de client com autorização OAuth 2, informar os campos:
     

    1. Código do Serviço (Obrigatório)
    2. Domínio (Obrigatório)
    3. Tipo de Autenticação (Obrigatório)
    4. Usuário (Obrigatório)
    5. Senha (Obrigatório)
    6. Confirmação da Senha (Obrigatório)
    7. Id Cliente (Obrigatório)
    8. Client Secret
    9. Refresh Token
    10. Tipo de Permissão
    11. Token de Acesso
    12. Escopo
    13. URL de redirecionamento
    14. URL refresh token
    15. URL GET para test da autenticação do serviço (Opcional)
    Image ModifiedImage Modified
  • Cadastro de client com autorização Basic Authentication, informar os campos:
     

    1. Código do Serviço (Obrigatório)
    2. Domínio (Obrigatório)
    3. Tipo de Autenticação (Obrigatório)
    4. Usuário (Obrigatório)
    5. Senha (Obrigatório)
    6. Confirmação da Senha (Obrigatório)
    7. URL GET para test da autenticação do serviço (Opcional)
    Image Modified

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
languagexml
themeEclipse
<?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
languagexml
themeEclipse
<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
languagexml
themeEclipse
<?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
languagexml
themeEclipse
	<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.

Image AddedImage AddedImage Added

 

 

 

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
    titleComo 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
languagejs
themeEclipse
titleExemplo de chamada no Java Script da customizção
		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
languagejava
themeEclipse
private UserService getUserServiceSDKgetAuthorizeClientSdkService() throws SDKException {
	return new FluigAPI().getUserService();
}

 

Consumindo um serviço do componente SDK a partir de eventos de javascript

Informações
titleEventos de Workflow e Eventos de Personalização Social
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
languagejava
themeEclipse
function beforeTaskCreate(colleagueId){
	log.info(fluigAPI.getUserService().getCurrent());
}

Exemplo 2

Bloco de código
languagejava
themeEclipse
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
titleObservação

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:

...

  1. Código do Serviço (Obrigatório)
  2. Domínio (Obrigatório)
  3. Tipo de Autenticação (Obrigatório)
  4. Consumer Key (Obrigatório)
  5. Consumer Secret (Obrigatório)
  6. Access Token (Obrigatório)
  7. Secret Token (Obrigatório)
  8. URL para o Access Token (Obrigatório)
  9. URL para o Request Token (Obrigatório)
  10. URL para Autorização (Obrigatório)
  11. URL GET para test da autenticação do serviço (Opcional)
getAuthorizeClientSdkService();
}

 

 

...