Para acessar com segurança recursos e serviços externos ao fluig à partir de processos de workflow 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.
Para acesso ao cadastro do Authorize Client, acessar no Fluig o menu Painel de Controle, aba WCM, opção Authorize Client. A funcionalidade provê recursos para inclusão, alteração, exclusão, consulta e teste dos client's.
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:
|
Cadastro de client com autorização OAuth 2, informar os campos:
|
Cadastro de client com autorização Basic Authentication, informar os campos:
|
Para utilizar o recursos do componente SDK, existem alguns pré-requisitos e exigências a serem seguidos, como:
<?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> |
<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> |
jboss-web.xml
<?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
<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> |
Veja a seguir o exemplo para a chamado ao serviço no SDK:
private UserService getUserServiceSDK() throws SDKException { return new FluigAPI().getUserService(); } |
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
function beforeTaskCreate(colleagueId){ log.info(fluigAPI.getUserService().getCurrent()); } |
Exemplo 2
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); } } } |
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:
|