|
|
(51 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
− | {{DISPLAYTITLE:i2Rest Advanced Setup}}
| + | This section describes configuration options of i2Rest Server. [[I2Rest_quick_config|Basic configuration]] allows only demo server functionality, and must be extended to supply full functional server instancence. Combining examples bellow you can achieve server functionality that suits your requirements. <br> |
− | We assume that you have completed our [[I2Rest_Server#basic_guide|basic guide]], so let's proceed updating i2Rest Server configuration on the way to the full functional server instance.<br>
| |
− | =SSL=
| |
− | The first thing we recommend to add to the [[I2Rest_quick_config|basic server configuration]] is a https protocol connections protection. Please follow [[I2Rest_secured_gate|detailed guide]].
| |
| | | |
− | =Request authorization=
| + | * [[Using secured connections]] |
− | Most of requests to i2Rest Sever require authorization. Such requests as [[I2Rest_API#run_command_API|IBM i command call]], [[I2Rest_API#run_program_API|API call]] (except anonymous API call) and [[I2Rest_API#Management_APIs|Мanagement api call]] without Oauth2 token with appropriate [[I2Rest_scopes|scope]] will not be served. Let's observe [[OAuth2_object#Settings_for_built-in_implementation|i2Rest built-in authorization model]] configuration options on example.<br>
| + | * [[i2Rest Gate URL definition using Unix socket|Serving incoming connections using Unix sockets]] |
− | | + | * [[I2Rest_with_syslog|Using syslog with i2Rest Server]] |
− | "OAuth2":
| + | * [[Configuring OAuth2 authorization]] |
− | {
| + | * [[Run_command_Api_config|How to allow calls to run_command API]] |
− | "scopes": {"management_functions" : {"description":"Invoke i2Rest manager APIs"}},
| + | * [[Management_API_config|How to allow calls to management API]] |
− | "users":
| + | * [[Remote_API_call_config|How to call API located on remote IBM i server]] |
− | {
| + | * [[I2Rest_Basic_PowerApps_Connector|How to create Microsoft Power Apps custom adapter to i2Rest Server]] |
− | "<span style="color:red;">USRX</span>":{"description":"<span style="color:red;">John Johnes</span>","valid_clients":{"<span style="color:red;">TSTCLNT</span>":{"scopes":["management_functions"]}}}
| + | i2Rest server should be [[I2Rest_Start|restarted]] to aplly your new configuration *.json. |
− | },
| |
− | "clients":
| |
− | {
| |
− | "<span style="color:red;">TSTCLNT</span>":{"redirect_uri":"<span style="color:red;"><main gate URL></span>/oauth2/redirect",
| |
− | "description":"Test client",
| |
− | "valid_scopes":["management_functions"],
| |
− | "valid_grant_types":["authorization_code"]}
| |
− | },
| |
− | "tokens": {"type":"token"},"codes":{"type":"code"}
| |
− | }
| |
− | The snippet above shows us [[OAuth2_object|Oauth2 object]], representing built-in authorization model. In general worlds i2Rest authorization model is something like '''WHAT''' is allowed and to '''WHOM''', and '''HOW''' it realized. '''WHAT''' parameters - are the "scopes", '''HOW''' parameters - "tokens", '''WHOM''' parameters - "users" and "clients" (built-in authorization model implies that both "users" and "clients" has to be registered as an IBM i users). So we can see that user '''USRX''' using client '''TSTCLNT''' is allowed to do some actions within '''"managment_functions"''' scope. And these are exactly the settings of Oauth2 object that we need to perform a Мanagement api call.<br>
| |
− | | |
− | ==Мanagement API call==
| |
− | So, what you have to do before we can test Мanagement API call to i2Rest Server:
| |
− | :a) Register two users on IBM i - one for a "сlient" parameter and one for a "user" parameter.
| |
− | :b) Fill the OAuth2 object template above with IBM i users values. Then add the snippet to your [[I2Rest_quick_config|basic server configuration]](with or without ssl protection) and put your new *.json anywhere on IBM i IFS.
| |
− | :c) Restart sever to apply your new configuration *.json.
| |
− | Now let's test the configuration obtaining [[Auth_profile_SoapUI|Oauth2 token with Soap UI]], and than proceed to [[Manage_API_SoapUI|Management api authorized call]].
| |
− | | |
− | == run_program API call==
| |
− | Unlike anonimous API call we performed in our [[I2Rest_Server#basic_guide|basic guide]] authorized API call requires Oauth2 token with [[I2Rest_scopes#run_program|"run_program" scope]] and local session defined. Look at our
| |
− | ----
| |
− | 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":"<nowiki>http://192.168.1.123:5678</nowiki>", ...},
| |
− | ...
| |
− | },
| |
− | === 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":"<nowiki>https://192.168.1.123:5678</nowiki>", "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"
| |
− | </pre>
| |
− | 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.
| |
− | ----
| |