Next BP 24.174.2

OAuth_Servidor_DAO extends DAO
in package

O Next BP como servidor de autorização OAuth 2.1 / OpenID Connect.

A concessão (grant) de um usuário a um aplicativo é uma linha de usuario_token com oauth_aplicativo_id preenchido: vale a mesma validação dos tokens de API (jti ativo, expiração, interseção com as permissões atuais do usuário), e desativar a linha na tela de Tokens de API revoga o aplicativo.

  • access token: JWT RS256 de vida curta, com o jti do grant;
  • refresh token: opaco, hash gravado, rotacionado a cada uso;
  • código de autorização: opaco, hash gravado, uso único, PKCE S256.

Reusar um código ou um refresh token já trocado revoga o grant: é o sinal de que ele vazou (RFC 9700 §4.14).

Ver manual/pt-BR/dev_oauth.md

Table of Contents

Constants

ESCOPOS_OIDC  = array('openid', 'profile', 'email', 'offline_access')
INATIVIDADE_REFRESH_TOKEN  = '+90 days'
PREFIXO_ESCOPO_PERMISSAO  = 'nextbp:'
STATUS_APROVADA  = 'aprovada'
STATUS_NEGADA  = 'negada'
STATUS_PENDENTE  = 'pendente'
STATUS_USADA  = 'usada'
TTL_ACCESS_TOKEN  = 3600
TTL_ID_TOKEN  = 3600
VALIDADE_CODIGO  = '+5 minutes'
VALIDADE_REQUISICAO  = '+15 minutes'

Properties

$_erp_empresa  : mixed
$_erp_filial  : mixed
$_erp_grupo  : mixed
$api_token  : mixed
$dir_dao  : mixed
$emp  : mixed
$idioma  : mixed
$instance_token  : mixed
$login_anonimo  : mixed
$token_job  : mixed
$viewcode  : mixed

Methods

__construct()  : mixed
api_token()  : mixed
aprovar()  : mixed
O usuário autorizou: cria o grant com as permissões e a validade que ele escolheu e devolve o endereço de retorno com o código.
autenticar_cliente()  : mixed
Identifica o aplicativo que chama o endpoint. Confidencial exige o segredo; público se identifica só pelo client_id (quem o protege é o PKCE).
AutoLoad()  : mixed
ConvertBase64()  : mixed
criar_requisicao()  : mixed
Delete_Token_JOB()  : mixed
detalhes_requisicao()  : mixed
O que a tela de consentimento mostra.
DxParamsAddFilter()  : mixed
emp()  : mixed
filtrar_escopos()  : mixed
Escopos aceitos: os do OpenID Connect e nextbp:<chave de permissão do catálogo>, que só pré-marca a permissão no consentimento. O resto é ignorado em vez de recusado: clientes MCP costumam pedir escopos próprios, e recusar quebraria a conexão sem proteger nada.
get_login_anonimo()  : mixed
getFormData()  : mixed
getJsonData()  : mixed
instance_token()  : mixed
introspectar()  : mixed
RFC 7662.
isJsonRequest()  : mixed
issuer()  : mixed
Identificador do servidor de autorização: {origem}/webservice/index.php/oauth.
limpar_expirados()  : mixed
LoadDAO()  : mixed
LoadHTML()  : mixed
LoadMail()  : mixed
LoadModel()  : mixed
LoadPDF()  : mixed
metadados()  : mixed
Metadados do servidor (RFC 8414 e OpenID Connect Discovery 1.0).
negar()  : mixed
pkce_valido()  : mixed
possui_escopo()  : mixed
ReadBodyParams()  : mixed
ReadDxParams()  : mixed
ReadFile()  : mixed
ReadFiles()  : mixed
ReadGet()  : mixed
ReadPost()  : mixed
ReadRequest()  : mixed
recurso_valido()  : mixed
resource (RFC 8707): URI absoluta, sem fragmento.
registrar_dinamico()  : mixed
renovar()  : mixed
revogar()  : mixed
RFC 7009: token desconhecido ou de outro aplicativo não é erro, só não faz nada.
set_login_anonimo()  : mixed
Start_Token_JOB()  : mixed
trocar_codigo()  : mixed
url_consentimento()  : mixed
Tela de login + consentimento, no frontend beta.
url_externa()  : mixed
url_retorno()  : mixed
userinfo()  : mixed
UserInfo do OpenID Connect.
WhatRequest()  : mixed
limite_sql()  : mixed
Normaliza um valor que será interpolado em LIMIT/OFFSET, onde o PDO também não aceita parâmetro nomeado. Negativos viram 0, pois quebrariam a consulta.
lista_ids_sql()  : mixed
Monta o conteúdo de um IN (...) a partir de ids já validados como inteiros.
normalizar_ids()  : array<string|int, mixed>
Normaliza uma lista de ids para interpolação segura em um IN (...).

Constants

ESCOPOS_OIDC

public mixed ESCOPOS_OIDC = array('openid', 'profile', 'email', 'offline_access')

Properties

$instance_token

protected static mixed $instance_token

$login_anonimo

protected static mixed $login_anonimo = false

Methods

aprovar()

O usuário autorizou: cria o grant com as permissões e a validade que ele escolheu e devolve o endereço de retorno com o código.

public aprovar(mixed $id, mixed $sessao_model, mixed $permissoes, mixed $politica_expiracao, mixed $data_expiracao) : mixed
Parameters
$id : mixed
$sessao_model : mixed
$permissoes : mixed
$politica_expiracao : mixed
$data_expiracao : mixed

autenticar_cliente()

Identifica o aplicativo que chama o endpoint. Confidencial exige o segredo; público se identifica só pelo client_id (quem o protege é o PKCE).

public autenticar_cliente(mixed $client_id, mixed $client_secret[, mixed $exigir_confidencial = false ]) : mixed
Parameters
$client_id : mixed
$client_secret : mixed
$exigir_confidencial : mixed = false

AutoLoad()

public static AutoLoad(mixed $className) : mixed
Parameters
$className : mixed

ConvertBase64()

public static ConvertBase64(mixed $name, mixed &$request_params) : mixed
Parameters
$name : mixed
$request_params : mixed

criar_requisicao()

public criar_requisicao(mixed $aplicativo_model, mixed $dados) : mixed
Parameters
$aplicativo_model : mixed
$dados : mixed

Delete_Token_JOB()

public static Delete_Token_JOB() : mixed

detalhes_requisicao()

O que a tela de consentimento mostra.

public detalhes_requisicao(mixed $id, mixed $sessao_model) : mixed
Parameters
$id : mixed
$sessao_model : mixed

DxParamsAddFilter()

public DxParamsAddFilter(mixed &$params, mixed $campo, mixed $condicao, mixed $valor) : mixed
Parameters
$params : mixed
$campo : mixed
$condicao : mixed
$valor : mixed

filtrar_escopos()

Escopos aceitos: os do OpenID Connect e nextbp:<chave de permissão do catálogo>, que só pré-marca a permissão no consentimento. O resto é ignorado em vez de recusado: clientes MCP costumam pedir escopos próprios, e recusar quebraria a conexão sem proteger nada.

public static filtrar_escopos(mixed $escopo) : mixed
Parameters
$escopo : mixed

get_login_anonimo()

public static get_login_anonimo() : mixed

getFormData()

public static getFormData([mixed $param = null ]) : mixed
Parameters
$param : mixed = null

getJsonData()

public static getJsonData([mixed $param = null ]) : mixed
Parameters
$param : mixed = null

instance_token()

public static instance_token() : mixed

introspectar()

RFC 7662.

public introspectar(mixed $token) : mixed
Parameters
$token : mixed

isJsonRequest()

public static isJsonRequest() : mixed

issuer()

Identificador do servidor de autorização: {origem}/webservice/index.php/oauth.

public static issuer() : mixed

Com caminho, a descoberta em {issuer}/.well-known/openid-configuration passa pelo próprio webservice e funciona em qualquer servidor web. OAUTH_ISSUER sobrescreve, para instalações atrás de proxy com outro endereço público.

limpar_expirados()

public static limpar_expirados([mixed $command_line_interface = false ]) : mixed
Parameters
$command_line_interface : mixed = false

LoadDAO()

public static LoadDAO(mixed $dao_class_required[, mixed $auto_construct = false ][, mixed $auto_load = false ]) : mixed
Parameters
$dao_class_required : mixed
$auto_construct : mixed = false
$auto_load : mixed = false

LoadHTML()

public static LoadHTML(mixed $html_class_required[, mixed $auto_construct = false ][, mixed $auto_load = false ]) : mixed
Parameters
$html_class_required : mixed
$auto_construct : mixed = false
$auto_load : mixed = false

LoadMail()

public static LoadMail(mixed $mail_class_required[, mixed $auto_construct = false ][, mixed $auto_load = false ]) : mixed
Parameters
$mail_class_required : mixed
$auto_construct : mixed = false
$auto_load : mixed = false

LoadModel()

public static LoadModel(mixed $model_class_required[, mixed $auto_construct = false ][, mixed $auto_load = false ]) : mixed
Parameters
$model_class_required : mixed
$auto_construct : mixed = false
$auto_load : mixed = false

LoadPDF()

public static LoadPDF(mixed $pdf_class_required[, mixed $auto_construct = false ][, mixed $auto_load = false ]) : mixed
Parameters
$pdf_class_required : mixed
$auto_construct : mixed = false
$auto_load : mixed = false

metadados()

Metadados do servidor (RFC 8414 e OpenID Connect Discovery 1.0).

public static metadados() : mixed

negar()

public negar(mixed $id, mixed $sessao_model) : mixed
Parameters
$id : mixed
$sessao_model : mixed

pkce_valido()

public static pkce_valido(mixed $code_verifier, mixed $code_challenge) : mixed
Parameters
$code_verifier : mixed
$code_challenge : mixed

possui_escopo()

public static possui_escopo(mixed $escopo_texto, mixed $escopo) : mixed
Parameters
$escopo_texto : mixed
$escopo : mixed

ReadBodyParams()

public ReadBodyParams([mixed $param = null ]) : mixed
Parameters
$param : mixed = null

ReadFile()

public ReadFile(mixed $name[, mixed $default = null ][, mixed $arrAcceptedMimeTypes = [] ]) : mixed
Parameters
$name : mixed
$default : mixed = null
$arrAcceptedMimeTypes : mixed = []

ReadFiles()

public ReadFiles(mixed $name) : mixed
Parameters
$name : mixed

ReadGet()

public ReadGet(mixed $name[, mixed $default = null ]) : mixed
Parameters
$name : mixed
$default : mixed = null

ReadPost()

public ReadPost(mixed $name[, mixed $default = null ]) : mixed
Parameters
$name : mixed
$default : mixed = null

ReadRequest()

public ReadRequest(mixed $name[, mixed $default = null ]) : mixed
Parameters
$name : mixed
$default : mixed = null

recurso_valido()

resource (RFC 8707): URI absoluta, sem fragmento.

public static recurso_valido(mixed $recurso) : mixed
Parameters
$recurso : mixed

registrar_dinamico()

public registrar_dinamico(mixed $dados) : mixed
Parameters
$dados : mixed

renovar()

public renovar(mixed $aplicativo_model, mixed $refresh_token, mixed $escopo) : mixed
Parameters
$aplicativo_model : mixed
$refresh_token : mixed
$escopo : mixed

revogar()

RFC 7009: token desconhecido ou de outro aplicativo não é erro, só não faz nada.

public revogar(mixed $aplicativo_model, mixed $token) : mixed
Parameters
$aplicativo_model : mixed
$token : mixed

set_login_anonimo()

public static set_login_anonimo(mixed $value) : mixed
Parameters
$value : mixed

Start_Token_JOB()

public static Start_Token_JOB(mixed $new_token) : mixed
Parameters
$new_token : mixed

trocar_codigo()

public trocar_codigo(mixed $aplicativo_model, mixed $codigo, mixed $redirect_uri, mixed $code_verifier, mixed $recurso) : mixed
Parameters
$aplicativo_model : mixed
$codigo : mixed
$redirect_uri : mixed
$code_verifier : mixed
$recurso : mixed

url_consentimento()

Tela de login + consentimento, no frontend beta.

public static url_consentimento(mixed $requisicao_id) : mixed
Parameters
$requisicao_id : mixed

url_retorno()

public static url_retorno(mixed $redirect_uri, mixed $parametros) : mixed
Parameters
$redirect_uri : mixed
$parametros : mixed

userinfo()

UserInfo do OpenID Connect.

public userinfo(mixed $token) : mixed
Parameters
$token : mixed

WhatRequest()

public WhatRequest(mixed $name[, mixed $default = null ]) : mixed
Parameters
$name : mixed
$default : mixed = null

limite_sql()

Normaliza um valor que será interpolado em LIMIT/OFFSET, onde o PDO também não aceita parâmetro nomeado. Negativos viram 0, pois quebrariam a consulta.

protected limite_sql(mixed $valor[, mixed $padrao = 0 ]) : mixed
Parameters
$valor : mixed
$padrao : mixed = 0

lista_ids_sql()

Monta o conteúdo de um IN (...) a partir de ids já validados como inteiros.

protected lista_ids_sql(mixed $valor) : mixed

Sem nenhum id aproveitável devolve o literal NULL, para o IN não casar com nada em vez de gerar SQL inválido.

Parameters
$valor : mixed

normalizar_ids()

Normaliza uma lista de ids para interpolação segura em um IN (...).

protected normalizar_ids(mixed $valor) : array<string|int, mixed>

Aceita array, string separada por vírgula ou escalar, e descarta tudo que não for numérico.

Use sempre que um valor vindo da request precisar entrar concatenado no SQL: os parâmetros nomeados do PDO não funcionam dentro de um IN (...) de tamanho variável, e é justamente aí que a concatenação crua costuma aparecer.

Parameters
$valor : mixed
Return values
array<string|int, mixed> —

Lista de inteiros reindexada; vazia quando nada é aproveitável.


        
On this page

Search results