OAuth2 e Autenticação Básica, Autorização E Auditoria por código do web app
Neste artigo, vou explicar como autenticar, autorizar e auditar por código usando o web app CSP ao ativar/desativar e autenticar/remover autenticação de qualquer web app.
- A demonstração online está disponível em cloud https://dappsecurity.demo.community.intersystems.com/csp/user/index.csp (SuperUser | SYS)
- Recomendo assistir o vídeo antes de continuar https://www.youtube.com/watch?v=qFRa3njqDcA
Layout do aplicativo
Vamos começar com a autenticação
A autenticação verifica a identidade de qualquer usuário ou outra entidade que tenta se conectar ao InterSystems IRIS®. Como se costuma dizer, a autenticação é como você prova que é quem diz ser.
Há várias maneiras diferentes que um usuário pode ser autenticado. Cada uma é conhecida como um mecanismo de autenticação. O InterSystems IRIS aceita vários mecanismos de autenticação:
- Kerberos — o protocolo Kerberos foi criado para oferecer uma autenticação segura a serviços em uma rede desprotegida. O Kerberos usa tickets para autenticar um usuário e evita a troca de senhas na rede.
- Baseado no sistema operacional — a autenticação baseada no SO usa a identidade do sistema operacional para cada usuário identificar esse usuário para o InterSystems IRIS.
- Autenticação da instância — com esse tipo de autenticação, o InterSystems IRIS solicita uma senha ao usuário e compara um hash de senhas fornecidas com um valor armazenado.
- Lightweight Directory Access Protocol (LDAP) — com esse protocolo, o InterSystems IRIS autentica o usuário com base nas informações em um repositório central, conhecido como servidor LDAP.
- Autenticação delegada — possibilita a criação de mecanismos de autenticação personalizados. O desenvolvedor do aplicativo controla totalmente o conteúdo do código de autenticação delegada.
Estou usando a Autenticação da instância. Para a criação do Usuário, podemos usar o seguinte comando objectscript :
&sql(CREATE USER TestUser IDENTIFY BY demo)Criamos TestUser com a senha da demonstração
Auditoria
Ao criar o registro do usuário, também é adicionado o banco de dados de auditoria usando o comando objectscript abaixo:
Do $SYSTEM.Security.Audit("%System","%Security","UserChange","User:TestUser | Password:demo","Audit Log inserted from Data_APP_Security").png)
Leia a documentação relacionada (Guia de auditoria): https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=AAUDIT
Autorização
Depois que a autenticação for concluída, precisamos criar funções, conceder Privilégios às funções e, em seguida, vincular as funções aos usuários (Autorização). Faremos isso em três etapas
Etapa 1: Crie uma função usando o seguinte comando objectscript. Estamos criando uma função ReadWrite
&sql(CREATE ROLE ReadWrite)
Etapa 2: conceda Privilégios SELECT,UPDATE,INSERT NA tabela à Função. Estamos atribuindo privilégios da tabela scw.Patient à função ReadWrite
&sql(GRANT SELECT,UPDATE,INSERT ON scw.Patient TO ReadWrite)
Etapa 3: Conceda a Função ao usuário. Estamos atribuindo a função ReadWrite ao TestUser
&sql(GRANT ReadWrite To TestUser)Ativar/desativar web app
Podemos ativar ou desativar o web app usando o seguinte código objectscript
New $Namespace
Set $Namespace = "%SYS"
Set App = ##class(Security.Applications).%OpenId("/terminal")
Set App.Enabled=0
Do App.%Save()
"/terminal" aqui é o nome do aplicativo. O aplicativo pode ser desativado definindo "App.Enabled" como 0 e ativado definindo o valor como 1
Autenticar/remover autenticação de web app
Podemos definir a autenticação usando o seguinte código objectscript
New $Namespace
Set $Namespace = "%SYS"
Set App = ##class(Security.Applications).%OpenId("/terminal")
Set App.AutheEnabled=0
Do App.%Save()"/terminal" aqui é o nome do aplicativo. A autenticação pode ser definida usando a propriedade "App.AutheEnabled". Os seguintes valores numéricos podem ser definidos
property AutheEnabled as Security.Datatype.Authentication [ InitialExpression = 64 ];
Authentication and Session mechanisms enabled (CSP Only).
Bit 2 = AutheK5API
Bit 5 - AutheCache
Bit 6 = AutheUnauthenticated
Bit 11 = AutheLDAP
Bit 13 = AutheDelegated
Bit 14 = LoginToken
Bit 20 = TwoFactorSMS
Bit 21 = TwoFactorPW
Obrigado