Difference between revisions of "I2Rest Advanced Setup"
Pavel.lobko (talk | contribs) (→Request authorization) |
Pavel.lobko (talk | contribs) |
||
Line 4: | Line 4: | ||
The first thing we recommend to add to a [[I2Rest_quick_config|basic server configuration]] is a https protocol connections protection. Please follow [[I2Rest_secured_gate|detailed guide]]. | The first thing we recommend to add to a [[I2Rest_quick_config|basic server configuration]] is a https protocol connections protection. Please follow [[I2Rest_secured_gate|detailed guide]]. | ||
=Request authorization= | =Request authorization= | ||
− | Most of requests to i2Rest Sever instance require authorization. | + | Most of requests to i2Rest Sever instance require authorization. [[I2Rest_API#run_command_API|IBM i command call]], [I2Rest_API#run_program_API|API call] (except anonymous API call, can be peformed witho Oauth2 token with appropriate scope to be served Let's observe i2Rest built-in authorization model configuration options.<br> |
<small>'''Note:''' built-in authorization model implies all i2Rest Server users has to be registered as an IBM i users.</small><br> | <small>'''Note:''' built-in authorization model implies all i2Rest Server users has to be registered as an IBM i users.</small><br> | ||
In general worlds authorization model is somenhing like WHAT is allowed and to WHOM, and HOW it realized. So WHAT allowed param - is scopes, HOW - tokens, WHOM params - users and clients. Look at simple template: | In general worlds authorization model is somenhing like WHAT is allowed and to WHOM, and HOW it realized. So WHAT allowed param - is scopes, HOW - tokens, WHOM params - users and clients. Look at simple template: |
Revision as of 11:41, 25 June 2020
Let's proceed updating i2Rest Server configuration on the way to full functional server instance.
SSL
The first thing we recommend to add to a basic server configuration is a https protocol connections protection. Please follow detailed guide.
Request authorization
Most of requests to i2Rest Sever instance require authorization. IBM i command call, [I2Rest_API#run_program_API|API call] (except anonymous API call, can be peformed witho Oauth2 token with appropriate scope to be served Let's observe i2Rest built-in authorization model configuration options.
Note: built-in authorization model implies all i2Rest Server users has to be registered as an IBM i users.
In general worlds authorization model is somenhing like WHAT is allowed and to WHOM, and HOW it realized. So WHAT allowed param - is scopes, HOW - tokens, WHOM params - users and clients. Look at simple template:
{ "curdir" : "/i2rest/1.0.0", "debug" : 7, "syslog":"udp://localhost:514", "gates": { "main" : {"url":"https://api.i2rest.com:22088","dcm_server_id":"MYSERVER"}, "management" : {"url":"https://192.168.0.233:8080","dcm_server_id":"MYSERVER"} }, "session_systems": [ { "name" : "*ANONYMOUS", "submit" : "SBMJOB JOB(I2RESTA) USER(${user}) CMD(CALL I2REST PARM('-session' '-url' '${surl}' '-uid' '${uid}' '-user' '${user}')) INLLIBL(I2REST)"}, { "name" : "*LOCAL", "submit" : "SBMJOB JOB(I2RESTS) USER(${user}) CMD(CALL I2REST PARM('-session' '-url' '${surl}' '-uid' '${uid}' '-user' '${user}' '-swap_to_user' '-init' 'ADDLIBLE I2REST' '-dcm_client_id' 'MYCLIENT'))" } ], "pcmls": [ { "pcml_mount" : "echo", "pcml_file" : "/home/btpl/jpcml/i2restecho.pcml", "valid_in_anonymous" : true } ], "OAuth2": { "scopes": {"run_program" : {"description":"Run *PGM and *SRVPGM"}, "run_command" : {"description":"Run CL command"}, "management_functions" : {"description":"Invoke i2Rest manager APIs"}}, "users": { "BTPL":{"description":"Pavel Lobko", "valid_clients":{"OAUTH21":{"scopes":["run_program", "run_command", "management_functions"]}}} }, "clients": { "OAUTH21":{"redirect_uri":"https://api.i2rest.com:22088/oauth2/redirect", "description":"Test client", "valid_scopes":["run_program", "run_command", "management_functions"], "valid_grant_types":["authorization_code", "urn:ietf:params:oauth:grant-type:device_code", "refresh_token", "client_credentials", "urn:i2rest:bridge:access_code"]} } } } <pre> This section describes the advanced configuration options of i2Rest Server. To configure, the file in the JSON format is used, the settings reference is [[I2Rest_Config|here]] __TOC__ = i2Rest Gates = [[I2Rest_Gates#i2Rest_Gates|i2Rest Gate]] is the endpoint where the server listens for incoming requests. The server uses up to three endpoints to process requests from clients, administrators/managers and sessions. Configuration file can contain up to three gate objects to setup these endpoints. If the configuration does not contain a setting for some gate, then the default setting is used - <code>file:</code> protocol at temporary location.<br/> Detailed description of all available configuration options for gates is [[Gates_object|here]] == i2Rest Gates protocols == === http === This is a common protocol, without encryption. You can use this protocol in a fully secure network environment. Example: "gates": { ... "main": {"url":"http://192.168.1.123:5678", ...}, ... }, === https === To protect the connections, use the https protocol. i2Rest Server uses standard [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_71/apis/unix9a.htm IBM i GSK API] to protect connections. All required parameters are configured using DCM, see [[I2Rest_secured_gate|detailed guide]]. Example: "gates": { ... "main": {"url":"https://192.168.1.123:5678", "dcm_server_id":"MYSERVER", ...}, ... }, === file === When your i2Rest Server instance and its clients both located on the same IBM i server, it is reasonable to use <code>file:</code> protocol. For example, you can use this protocol for management gate, to perform management functions using local i2Rest Client. i2Rest Server is able to listen incoming requests at some [https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzab6/uafunix.htm%7Cunix unix socket] defined as a file at IFS. In this case, the server will not be accessible externally. i2Rest Server uses temporary <code>file:</code> endpoints when it can't find configuration for some gate. Temporary <code>file:</code> endpoints are created at <code>/tmp</code> folder, for example <code>/tmp/AS5WRD7DCJ</code>. Example: "gates": { ... "session": {"url":"file:///tmp/session_gate", ...}, ... }, = i2Rest Sessions = Ссылка или дублирование "что такое session system".<br/> Ссылка на reference настройки<br/> Упомянуть о сессиях на другой IBM i и на другой платформе<br/> Привести примеры настройки сессий<br/> * Обычные сессии (*LOCAL) <pre> { "name": "*LOCAL", "submit":"SBMJOB JOB(I2RESTS) USER(${user}) \ CMD(CALL I2REST/I2REST PARM( \ '-session' \ '-url' '${surl}' \ '-uid' '${uid}' \ '-user' '${user}' \ '-swap_to_user' \ '-scopes' '${scopes}' \ '-init' 'ADDLIBLE I2REST' \ '-dcm_client_id' 'MYCLIENT'))" }, * Анонимные сессии (*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 == i2Rest Server comes with a default set of web-pages to be shown to user in the user-server dialog (for example in Server and Client OAuth2 flows). You can use the snippet bellow as a default settings, just copy and paste them to your configuration file. <pre> "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"
Whenever you want to use pages with your own design - you are free to create them, place them on IFS and set up your config.