본문 바로가기
  • Welcome!
VBA For Windchill

Windchill & VBA 02) NONCE Token

by ToolBOX01 2024. 6. 25.
반응형

NONCE Token 이란?

난스(nonce)는 SOAP 메시지에서 사용되는 사용자 이름 토큰의 도난을 방지하기 위해 사용되는 랜덤하게 생성되는 암호화 토큰입니다. A nonce is a randomly generated cryptographic token used to prevent theft of username tokens used in SOAP messages.

Nonce는 기본 인증 (BasicAuth) 메소드와 함께 사용됩니다.
Nonce is used with the BasicAuth method.

Windchill Rest API를 사용 하려면, 로그인을 해야 합니다. 토큰을 발생 받아 자격증명을 합니다
To use Windchill Rest API, you need to log in. Get a token and provide your credentials.

토큰 요청 코드 (Token Request Code)

재사용 가능 한 모듈 만들기
Creating reusable modules

Option Explicit
Sub CSRFToken01()
    
    '// MSXML2 XMLHTTP 객체를 만듭니다. (Creates an MSXML2 XMLHTTP object)
        Dim xmlHttp As Object
        Set xmlHttp = CreateObject("MSXML2.XMLHTTP")

    '// 요청 메서드를 GET으로 설정합니다. (Set the request method to GET.)
    xmlHttp.Open "GET", "http://plm.*****.com/Windchill/servlet/odata/PTC/GetCSRFToken()", False

    '// 요청 헤더를 설정합니다.(Sets the request headers.)
    xmlHttp.SetRequestHeader "Content-Type", "application/json"
    xmlHttp.SetRequestHeader "Accept", "application/json"

    '// 요청을 보냅니다.(Send your request.)
    xmlHttp.Send

        '// 응답 상태를 확인합니다.(Check the response status.)
        If xmlHttp.Status = 200 Then
            '// 응답 JSON을 가져옵니다. (Get the response JSON.)
            Dim responseJson As String
            responseJson = xmlHttp.ResponseText
            
            '// JSON을 파싱합니다. (Parse JSON)
            Dim jsonData As Object
            Set jsonData = JsonConverter.ParseJson(responseJson)
            
            '// CSRF 토큰을 가져옵니다.(Get the CSRF token.)
            Dim csrfToken As String
            csrfToken = jsonData("NonceValue")
            
            ' //CSRF 토큰을 사용합니다.(Use CSRF tokens.)
            MsgBox "CSRF Token: " & csrfToken
            
            Debug.Print jsonData("NonceKey")
            Debug.Print jsonData("NonceValue")
            
        Else
            ' //오류 처리 (Error Handling)
            MsgBox "Error: " & xmlHttp.Status
        End If

End Sub

주의 - caution)

"plm.*****.com"은 사용 하는 PLM 주소 입니다
"plm.*****.com" is the PLM address you are using

예제 결과) JSON으로 가져온 토큰 값
Token value retrieved as JSON

{
 "@odata.context": "https://windchill.ptc.com/Windchill/servlet/odata/v3/PTC/$metadata#CSRFToken",
 "NonceKey": "CSRF_NONCE",
 "NonceValue": "8q87WtSxvWkSH9FMtsQUboOI5TtCS7gWh8RUb4OG ="
}

이 요청에서 반환된 CSRF_NONCE 값은 엔터티를 생성(POST 요청), 수정(PUT 및 PATCH 요청) 또는 삭제(DELETE 요청)하기 위해 이 사용자 가이드에 제공된 모든 예제에서 요청 헤더로 전달되어야 합니다.
The CSRF_NONCE value returned in this request must be passed as a request header in all examples provided in this user guide for creating (POST requests), modifying (PUT and PATCH requests), or deleting (DELETE requests) entities.

▷ ▷ JSON  파일 사용 방법

 

[엑셀 크롤링] JSON 데이터 다루기 (기본 셋업)

안녕하세요. 하날리야입니다. 오늘은 크롤링을 하면서 웹 상에서 자주 등장하는 데이터 형태인 'JS...

blog.naver.com