Encontrar

記事
· 2024年9月15日 4m read

第二十六章 添加数字签名 - 示例

第二十六章 添加数字签名 - 示例

示例

此示例显示了对其响应消息进行签名的 Web 服务。

为了使此示例在自己的环境中运行,请首先执行以下操作:

  • 为服务器创建证书。
  • 将此证书加载到服务器端的 IRIS 中,创建名为 servercred 的凭证。执行此操作时,还要加载私钥文件并提供其密码(这样 Web 服务在签署其响应消息时就不必提供该密码。)

Web 服务指的是具有此确切名称的 IRIS 凭证集。

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
記事
· 2024年9月15日 3m read

Comment trouver mon texte spécifique en ObjectScript

Vous connaissez probablement cette situation :
il y a quelque temps, vous avez trouvé une fonction $ZU très spéciale pour
un type de problème spécifique. Une sorte de formule mystique.
Elle est devenue populaire et a été utilisée par de nombreux programmeurs
dans tout votre code et toutes vos installations .

Plusieurs versions et updates plus tard, vous êtes informé par ISC que
votre $ZU mystique est déprécié et n'est plus supporté. Et on vous conseille
de le remplacer par un nouveau $something(). 

Alors, comment trouver et documenter l'utilisation de votre code mystère ?
Il pourrait se trouver dans les classes, dans le code MAC,  INT, INC.
Et il peut être distribué dans plusieurs namespaces.
Dans le passé, Studio n'était encore completé et peu adapté, mais lent et peu précis.

J'ai rencontré cette situation plus d'une fois dans différentes installations.
Source Control n'était pas disponible à l'époque
et n'a été que rarement utilisé lorsqu'il a été ajouté.

ObjectScript étant le seul choix possible pour relever ce défi, j'ai écrit mon propre outility.
Ma solution s'est développée au fil des ans et une fois que la migration vers IRIS a été planifiée,
j'ai vérifié une fois de plus à quel point elle était utile.
Et comme elle était écrite en ObjectScript pur, elle fonctionnait dans IRIS sans qu'aucun
caractère n'ait été modifié. Comme vous le savez peut-être, le problème de la recherche
d'un morceau de texte spécifique en ObjectScript n'a pas changé. 

Mon objectif personnel pour mon outility était

  • uniquement l'ObjectScript
  • pas de constructions fantaisistes, miraculeuses ou délicates
  • le moins possible de fonctions $advanced
  • préférer la lisibilité à l'élégance en faveur de la maintenance future
  • présenter le nombre d'occurrences comptées par espace de noms et par élément de code
  • pour les classes, diviser également 
    • parameter,
    • properties (si calculated)
    • methods
    • indices
  • une option pour montrer la ligne qui les contient
  • ne se soucient pas de la liste.
    • N'importe quel programme de terminal peut écrire un journal
    •  bash a son STDOUT à cet effet

Ce utility est donc disponible pour vous sur Open Exchange et GitHub
J'ai également créé une vidéo pour démontrer le péage en action.
Et il est également disponible sur Demo Server

Il vous suffit de démarrer depuis le terminal
user>DO ^rcc.find 

Et vous obtenez quelques questions

  •  quel est le texte que vous recherchez ?
  • verbose » ?
    • voulez-vous voir chaque ligne complète contenant votre texte ?
    • Attention, cela peut devenir une liste assez énorme
    • Un test récent a trouvé plus de 90000 résultats.
    • Avec verbose=1, on obtient plus de 90000 lignes.
  • Uniquement en majuscules ?
    • Cela résout le problème selon lequel une fonction peut être écrite
    • en majuscules, minuscules ou mixtes.
    • "Uppercase=1" garantit que vous ne manquez aucune occurrence
  • Quel type de code voulez-vous vérifier ? (CLS,MAC,INT,INC,ALL)
  • Quel namespace voulez-vous rechercher ?
    • Un namespace spécifique de votre liste ou ALL
    • pour ALL vous obtenez une liste condensée d'espaces de noms et de types
    • (non visible dans la vidéo)

La sélection de namespace lance la recherche.
Alors on danse !

USER>do ^rcc.find
----------------
 
enter search string [$ZU] <blank> to exit: RCC
          Verbose? (0,1) [0]:
          Force UpperCase? (1,0) [1]:
 
enter code type (CLS,MAC,INT,INC,ALL) [ALL]: CLS
 
select namespace (ALL,%SYS,DOCBOOK,ENSDEMO,ENSEMBLE,SAMPLES,USER) [USER]:
 
** Scan Namespace: USER **
 
** CLS **
** 2      User.ConLoad
** 15     User.Main
** 3      csp.form
** 3      csp.winner
** 2      dc.rcc.Contest
** 37     dc.rcc.Main
** 1      dc.rcc.Prize
** 63 CLS **
----------------

 

J'espère que vous avez apprécié mon histoire.
J'ai essayé d'éviter les séquences de code ennuyeuses. Il y a OpenExchange et Github pour cela.

Et s'il vous plaît, excusez mon français rouillé.
Je l'ai appris à l'école il y a 65 ans et il n'y était pas question de technologie
mais de Molière, Sartre, Queffélec, Anouilh, Ionesco, ... 

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
質問
· 2024年9月15日

Have you tried the THROUGH command in IRIS 2024.2? How does it work?

Has anyone successfully tested the new THROUGH command in IRIS 2024.2 with a FOREIGN SERVER?https://docs.intersystems.com/iris20242/csp/docbook/Doc.View.cls?KEY=RSQ...

I have connected from a Docker instance to a VM. I was able to successfully set up the JDBC connection through the UI.

I then configured a foreign server with this connection:

But I am unable to send a SQL 'THROUGH' to the DB. I always get a:

I've get the same message if i try it via Management Portal.

I've also tried this:

and this

Always with the same error. According to the documentation, the syntax without ‘ and " should be correct.

Also a simple  

gives this error...

Any idea how this works?

Andreas

11 Comments
ディスカッション (11)2
続けるにはログインするか新規登録を行ってください
記事
· 2024年9月14日 4m read

第二十五章 添加数字签名

第二十五章 添加数字签名

本主题介绍如何向 IRIS Web 服务和 Web 客户端发送的 SOAP 消息添加数字签名。

通常,会同时执行加密和签名。为简单起见,本主题仅介绍签名。有关结合加密和签名的信息,请参阅主题结合加密和签名。

主题使用派生密钥令牌进行加密和签名描述了向 SOAP 消息添加数字签名的另一种方法。

数字签名概述

可以使用数字签名来检测消息是否被篡改,或者简单地验证消息的某一部分是否确实由所列实体生成。与传统的手工签名一样,数字签名是对文档的附加,只有文档的创建者才能创建,并且不容易伪造。

IRISSOAP 消息的数字签名的支持基于 WS-Security 1.1。反过来,WS-Security 遵循 XML 签名规范。根据后者的规范,要对 XML 文档进行签名:

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
記事
· 2024年9月14日 4m read

Desenvolvendo SMART em aplicações FHIR com Auth0 e InterSystems IRIS FHIR Server - Introdução

Introdução

Eu recentemente participei no "mão na massa" fantasticamente organizado pelo @Patrick Jamieson no qual uma aplicação Angular foi configurada junto com um servidor IRIS FHIR seguindo os protocolos definidos pelo SMART On FHIR e eu o achei muito interessante, então decidi desenvolver a minha própria aplicação Angular e então usar o que aprendi e publicar na comunidade.

SMART On FHIR

Vamos ver o que o Google nos conta sobre o SMART On FHIR:

SMART on FHIR é um padrão de dados que permite que aplicações acessem informação em sistemas de registro eletrônico de saúde (EHR). Um desenvolvedor de aplicação pode escrever uma única aplicação que conecta em qualquer sistema EHR que adotou o padrão.

Os conceitos principais que vamos usar no SMART On FHIR são:

  • Autenticação a autorização delegados por OAuth2 ou OpenID.
  • Administração de recursos FHIR no contexto definido.
  • comunicações HTTPS.

Arquitetura do nosso projeto

Para esse exercício, nós configuramos os seguintes elementos em Docker e o serviço Auth0:

  • Uma aplicação desenvolvida em Angular que vai atuar como nosso front-end, essa aplicação foi desenvolvida seguindo os princípios de SMART On FHIR.
  • servidor web NGINX e proxy reverso que vai publicar nossa aplicação desenvolvida em Angular.
  • Auth0 vai providenciar a autenticação e autorização por meio de OAuth2.
  • InterSystems IRIS no qual vamos publicar nosso servidor FHIR e no qual vamos conectar por meio do Web Gateway que inclui um servidor Apache já disponível na imagem Docker.

Auth0

Apesar de que poderíamos delegar a autenticação e autorização de usuários para outro servidor IRIS publicado com esse propósito, nessa ocasião vamos usar o serviço oferecido por Auth0.

O que é Auth0?

Auth0 é um serviço que fornece o mecanismo inteiro para configurar autorização e autenticação das nossas plataformas.

Auth0 também tem livrarias específicas em diferentes linguagens para conseguir facilmente integrar com qualquer projeto, então é sempre uma opção apra levar em conta para desenvolvimentos baseados em SMART On FHIR.

Incluindo Auth0 na nossa aplicação.

Já que o uso de OAuth2 é uma condição necessária para usar o  SMART On FHIR, isso implica a inclusão de um servidor OAuth2 no processo usual de autenticação, autorização e acesso à aplicação. No diagrama a seguir, podemos ver o caminho tomado pela informação enviada ao sistema com o serviço Auth0:

Vamos analisar o processo:

  • Login request:
    1. Login request: O usuário acessa a aplicação no browser de internet e faz uma requisição para login.
    2. Login request: A aplicação Angular encaminha a requisição para o serviço Auth0
    3. Login page: Auth0 envia um redirecionamento para usa própria página para o browser de internet do usuário.
  • Autenticação no Auth0:
    1. User credentials: O usuário entra com o email e senha que estão registrados no Auth0
    2. Authentication & Authorization: Auth0 valida os dados e gera um Access_token incluindo o contexto atribuido ao usuário.
    3. Access_token response & redirection: Auth0 redireciona a resposta à URL indicada na configuração do projeto incluindo o token gerado
    4. Patient screen: A aplicação Angular mostra ao usuário a página para registrar seus dados pessoais.
  • Recurso de registro FHIR:
    1. Save patient: o usuário preenche o formulário com seus dados e a aplicação angular transforma o formulário em um objeto JSON no formato do recurso FHIR Patient.
    2. POST request: a aplicação Angular envia um HTTP POST para o servidor FHIR publicado no IRIS incluindo o access_token como token de autenticação no cabeçalho da requisição
    3. POST response: após receber a requisição POST via Web Gateway, o IRIS checa a validade do token e o contexto da requisição. Se tudo estiver correto,  vai validar o recurso recebido e registrar no servidor FHIR, retornando uma HTTP 201 indicando a criação do novo recurso e anexando ao cabeçalho o identificador atribuido ao novo recurso
    4. Operation success: A aplicação Angular vai redirecionar o usuário à tela mostrando as funcionalidades principais.

Uma vez logado, a livraria Auth0 inclusa no projeto terá a função de interceptar todas as requisições que fazemos ao servidor  FHIR para incluir o token de acesso recebido pela Auth0.

Em breve...

Nos próximos artigos, vamos ver como precisamos configurar cada um dos sistemas envolvidos e finalmente como conectá-los a nossa aplicação Angular. Para aqueles que não conseguem esperar, vocês podem consultar o README.md presente no GitHub associado com o projeto OpenExchange relacionado a esse artigo, que explica em detalhes como configurar o Auth0 e o InterSystems IRIS.

Awfully Good: Stay Tuned (1992) with John Ritter

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください