Difference between revisions of "Device flow description"

From i2Rest
Jump to: navigation, search
(Device flow by i2Rest command)
(Overview)
Line 9: Line 9:
 
(B) The authorization server responds with a device code, an end-user code and the verification URL.<br>  
 
(B) The authorization server responds with a device code, an end-user code and the verification URL.<br>  
 
(C) i2Rest Client displays an end-user code and the verification URI and thus instructs the end user to visit authorization page using a user agent on another device.<br>  
 
(C) i2Rest Client displays an end-user code and the verification URI and thus instructs the end user to visit authorization page using a user agent on another device.<br>  
(D) The end-user follows provided verification URL on any browser capable device.<br>  
+
(D) The end-user follows provided verification URL on any browser capable device.<br>  
(E)At the time end-user  i2 rest starts polling authorization server.<br>  
+
(E) i2Rest Client starts polling authorization server with device code to determine whether the user has authorized the request.<br>  
(F)The authorization server validates the device code provided by the client and responds with the access token if the client is granted access, an error if they are denied access, or an indication that the client should continue to poll.<br>
+
(F) The authorization server validates the device code provided by the client and responds with the access token if the client is granted access, an error if they are denied access, or an indication that the client should continue to poll.<br>
  
 
==Device flow by i2Rest command==
 
==Device flow by i2Rest command==

Revision as of 12:35, 29 May 2020

Overview

Oauth 2.0 Device flow is the authorization scenario for those devices (like IBM i), that has no ability to display an authorization web page when making request to private data on resources with limited access. When application runing on a such device trying to access some protected data,
Device-flow-scheme1.png
Device flow scheme.

(A) i2Rest Client initiates the flow with a request to the authorization server. The request incudes client identifier and requested scope.
(B) The authorization server responds with a device code, an end-user code and the verification URL.
(C) i2Rest Client displays an end-user code and the verification URI and thus instructs the end user to visit authorization page using a user agent on another device.
(D) The end-user follows provided verification URL on any browser capable device.
(E) i2Rest Client starts polling authorization server with device code to determine whether the user has authorized the request.
(F) The authorization server validates the device code provided by the client and responds with the access token if the client is granted access, an error if they are denied access, or an indication that the client should continue to poll.

Device flow by i2Rest command

The next parameters are mandatory to perform request with Device flow by I2Rest command.

Parameter Description
Authentication method *OAUTH2D must be specified
Command Any of available request type can be choosen
API endpoint HTTP resource to serve the request
User/OAuth2 client/device ID Credentials to authenticate i2Rest Client with authorization server
User/OAuth2 client/dev passwd
OAuth2 authorization endpoint HTTP resource to be requested for an authorization URL and device code
OAuth2 token endpoint HTTP resource to be requested for an access token
Scope The set of resources and operations that are allowed to application with access token

i2Rest command example bellow represents request for creating i2rest.doc file on Google Drive, please explore the appropriate use case.

I2REST COMMAND(*POST)                                       
       URL('https://www.googleapis.com/drive/v3/files')     
       BODY(*N '{"name":"i2rest.doc"}' 
            'application/json' *YES 1208)
       OUTPUT(*BOTH)  
       AUTHMETHOD(*OAUTH2D)                                      
       DCMCLIENT(MYCLIENT)                                  
       RECVLOG('/home/btpl/recv.log')                       
       SENTLOG('/home/btpl/sent.log')                       
       TOKENS('/qsys.lib/qtemp.lib/tokens.usrspc')
       AUTHID('677815701888-dfa6i6tcrvqpvmc1acii98ij32h7lc3j
              .apps.googleusercontent.com')                 
       AUTHPW('2Rstk_A-u4rbLcm6OFcclMz5')                   
       AUTHURL('https://oauth2.googleapis.com/device/code') 
       TOKENURL('https://oauth2.googleapis.com/token')      
       SCOPE('https://www.googleapis.com/auth/drive.file')

Back to i2Rest Client