外部からRESTでロボットを実行する際の認証情報の指定方法

フォローする

本件はBizRobo! Basic固有の内容ではなく、REST Web Serviceを使用した一般的な話となりますが確認できている範囲で、外部からロボットを実行する際に指定するUser NameとPasswordの指定方法について、参考として以下に紹介します。

以下にExcelマクロからロボットをRESTを使用して呼び出す際の設定例を記載させていただきますので、以下の通りMCへの認証情報をリクエストヘッダに設定のうえお客様環境に合わせてRESTを送信ください。

 

'接続するURLのベース部分を指定
Private Const TARGET1_URL As String = "http://localhost:50080/rest/run/run_from_excel/robot_name"

Public Function CreateHttpObject() As Object
    Dim objweb As Object

    '各種名称でHTTPオブジェクトの生成を試みる
    Err.Clear
    Set objweb = CreateObject("MSXML2.ServerXMLHTTP.6.0")
    If Err.Number = 0 Then
        Set CreateHttpObject = objweb
        Exit Function
    End If

    Err.Clear
    Set objweb = CreateObject("MSXML2.ServerXMLHTTP")
    If Err.Number = 0 Then
        Set CreateHttpObject = objweb
        Exit Function
    End If

    Err.Clear
    Set objweb = CreateObject("MSXML2.XMLHTTP")
    If Err.Number = 0 Then
        Set CreateHttpObject = objweb
        Exit Function
    End If

    Set CreateHttpObject = Nothing

End Function

Public Function PostData(ByRef p_data As Variant, ByVal p_mode As Integer) As String

    Dim objweb As Object
    Dim strURL As String

    'XMLHTTPオブジェクトを生成
    Set objweb = CreateHttpObject()

    'オブジェクトの生成に失敗していれば処理終了
    If objweb Is Nothing Then
        PostData = ""
        Exit Function
    End If

    strURL = TARGET1_URL

    Call objweb.Open("POST", strURL, False)
    '-- Basic 認証
    Call objweb.setRequestHeader("Authorization", "Basic エンコードした認証文字列")
    '-- ヘッダ
    Call objweb.setRequestHeader("Content-Type", "application/xml; charset=utf-8")
    Call objweb.setRequestHeader("Accept", "application/xml; charset=utf-8")
    Call objweb.Send(p_data)

    PostData = objweb.responseText

    Set objweb = Nothing

End Function

なお、下記外部サイトではユーザ名:admin パスワード:aaa の場合、上記Call objweb.setRequestHeaderには(“Authorization”, “Basic YWRtaW46YWFh”)を指定する必要があると見受けられます。

また、BEARER認証の場合は下記外部サイトでは”Authorization: Bearer トークン”の記載形式が正しいと見受けられます。

<参考外部サイト>
basic認証の挙動
【php】ベーシック認証のかかっているWebページの内容を取得する
Authorization Bearer ヘッダを用いた認証 API の実装
Base64エンコード
Base64デコード