Difference between revisions of "I2Rest Advanced Setup"

From i2Rest
Jump to: navigation, search
m (Alexei.baranov moved page I2Rest Basic Setup to I2Rest Advanced Setup without leaving a redirect)
Line 1: Line 1:
{{DISPLAYTITLE:I2Rest Basic Setup}}
+
{{DISPLAYTITLE:i2Rest Advanced Setup}}
 
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 15:52, 11 June 2020

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_gate"}
   },
   "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"
   }