Difference between revisions of "I2Rest Advanced Setup"
| Line 1: | Line 1: | ||
{{DISPLAYTITLE:i2Rest Advanced Setup}} | {{DISPLAYTITLE:i2Rest Advanced Setup}} | ||
| + | Расширенную настройку предлагаю описывать следующими разделами: | ||
| + | __TOC__ | ||
| + | = i2Rest Gates= | ||
| + | Даем ссылку на описание что такое gate, ссылку на страничку с настройками<br/> | ||
| + | == i2Rest Gates protocols == | ||
| + | === http === | ||
| + | Незащищенный протокол | ||
| + | === https === | ||
| + | Защищенный протокол, используется стандартное GSK API. Все параметры SSL настраиваются в DCM | ||
| + | === file === | ||
| + | Протокол, использующий unix sockets. Удобен при работе клиента и сервера на одной и той же машине. | ||
| + | = i2Rest Sessions = | ||
| + | Ссылка или дублирование "что такое session system".<br/> | ||
| + | Ссылка на reference настройки<br/> | ||
| + | Упомянуть о сессиях на другой IBM i и на другой платформе<br/> | ||
| + | Привести примеры настройки сессий<br/> | ||
| + | * Обычные сессии (*LOCAL) | ||
| + | * Анонимные сессии (*ANONYMOUS) | ||
| + | * Варианты обычных сессий (system_XXX) - для задания особых параметров запуска, например логирования, запуск в выделенной подсистеме и прочее | ||
| + | * Запуск сессии на удаленной машине (SBMRMTJOB) | ||
| + | = Настройка API = | ||
| + | * Используем PCML, дать ссылку на что такое PCML, какие особенности PCML в i2Rest | ||
| + | * Примеры PCML | ||
| + | * Примеры расширенных PCML, включая тег openapi30 | ||
| + | = Настройка параметров доступа OAuth2 = | ||
| + | == Модели настройки доступа == | ||
| + | Стандартная и custom модель, стандартная - бесплатная. Custom - позволяет настраивать собственные правила или справочники для пользователей, клиентов и токенов. | ||
| + | == Стандартная модель == | ||
| + | === users === | ||
| + | === clients === | ||
| + | === scopes === | ||
| + | === tokens === | ||
| + | == Custom access model == | ||
| + | User exits для реализации custom модели | ||
| + | == Standard UI pages == | ||
| + | |||
| + | ---- | ||
Take a look on how the minimal i2Rest configuration might look like. | Take a look on how the minimal i2Rest configuration might look like. | ||
<pre> | <pre> | ||
Revision as of 11:42, 15 June 2020
Расширенную настройку предлагаю описывать следующими разделами:
Contents
i2Rest Gates
Даем ссылку на описание что такое gate, ссылку на страничку с настройками
i2Rest Gates protocols
http
Незащищенный протокол
https
Защищенный протокол, используется стандартное GSK API. Все параметры SSL настраиваются в DCM
file
Протокол, использующий unix sockets. Удобен при работе клиента и сервера на одной и той же машине.
i2Rest Sessions
Ссылка или дублирование "что такое session system".
Ссылка на reference настройки
Упомянуть о сессиях на другой IBM i и на другой платформе
Привести примеры настройки сессий
- Обычные сессии (*LOCAL)
- Анонимные сессии (*ANONYMOUS)
- Варианты обычных сессий (system_XXX) - для задания особых параметров запуска, например логирования, запуск в выделенной подсистеме и прочее
- Запуск сессии на удаленной машине (SBMRMTJOB)
Настройка API
- Используем PCML, дать ссылку на что такое PCML, какие особенности PCML в i2Rest
- Примеры PCML
- Примеры расширенных PCML, включая тег openapi30
Настройка параметров доступа OAuth2
Модели настройки доступа
Стандартная и custom модель, стандартная - бесплатная. Custom - позволяет настраивать собственные правила или справочники для пользователей, клиентов и токенов.
Стандартная модель
users
clients
scopes
tokens
Custom access model
User exits для реализации custom модели
Standard UI pages
Take a look on how the minimal i2Rest configuration might look like.
{
"gates":
{
"main" : {"url":"http://i2rest.com:22088"},
"management" : {"url":"http://192.168.0.233:8080"},
"session" : {"url":"http://192.168.0.233:8888"}
},
"session_systems":
[
{"name": "*LOCAL", "submit":"SBMJOB JOB(I2RESTS) USER(${user}) CMD(CALL JPCML/I2REST PARM('-session' '-url' '${surl}' '-uid' '${uid}'
'-user' '${user}' '-init' 'ADDLIBLE JPCML' '-dcm_client_id' 'MYCLIENT')) INLLIBL(KAPBASELIB QGPL)"},
{"name": "*ANONYMOUS", "submit":"SBMJOB JOB(I2RESTA) USER(${user}) CMD(CALL JPCML/I2REST PARM('-session' '-url' '${surl}' '-uid' '${uid}'
'-user' '${user}' '-init' 'ADDLIBLE JPCML' '-dcm_client_id' 'MYCLIENT')) INLLIBL(KAPBASELIB QGPL)"},
],
}
According to I2Rest Configuration Object description just two i2Rest Configuration Object fields are mandotary: gates object and main, manager and session gates object. With only this two configured fields we already can run a server instance, but still can't get much use of it. Most valuable i2Rest Server applications - the run_program API and the run_command API requires some more stuff:
- run_command API requires Oauth2 object;
- run_program API generally requires PCML object to be set up, but Oauth2 object also is mandotary for programs which has "valid_in_anonymous":false flag in PCML.
So the setting that allows to call IBM i program as a web service might look like as follows:
"pcmls":
[
{"pcml_mount":"echo", "pcml_file":"pcml/echo.pcml", "valid_in_anonymous":true},
],
Not too dificult, isn't it? Much more complex Oauth2 object example below:
"OAuth2":
{
"scopes": {"run_program" : {"description":"Run *PGM and *SRVPGM"},
"run_command" : {"description":"Run CL command"},
"system_BTC7" : {"description":"Execute API on BTC7"},
"management_functions" : {"description":"Invoke i2Rest manager APIs"}},
"clients":
{
"OAUTH21":{"redirect_uri":"http://api.i2rest.com:22088/oauth2/redirect",
"description":"Test client",
"valid_scopes":["run_program", "run_command", "management_functions", "system_BTC7"],
"valid_grant_types":["authorization_code", "urn:ietf:params:oauth:grant-type:device_code", "refresh_token", "client_credentials"]}
},
"users":
{
"BTAB":{"description":"Alexei Baranov", "valid_clients":{"OAUTH21":{"scopes":["run_program", "run_command", "management_functions", "system_BTC7"]}}},
"BTPL":{"description":"Pavel Lobko", "valid_clients":{"OAUTH21":{"scopes":["run_program", "run_command", "management_functions", "system_BTC7"]}}}
},
"tokens": {"type":"token"},"refresh_tokens":{"type":"refresh_token"},"codes":{"type":"code"},"device_codes":{"type":"user_code"},
"login_page" : "/pages/Login/index.html",
"decision_page" : "/pages/user_decide.html",
"bad_auth_page" : "/pages/bad_auth.html",
"enter_code_page" : "/pages/enter_code.html",
"device_connected_page" : "/pages/device_connected.html"
}