%@ Language="VBScript" CodePage="65001" %>
<%
' Halaman uji. Tidak menampilkan secret. HAPUS setelah integrasi selesai.
Dim panjang
xgTanpaCache
Sub Baris(status, teks)
Response.Write "[" & status & "] " & Server.HTMLEncode(teks) & "
" & vbCrLf
End Sub
Response.Write "
"
' 1. Komponen server
Baris "INFO", "Sesi ASP: " & Session.SessionID
Baris "INFO", "Jam server (detik Unix): " & xgDetikSekarang()
On Error Resume Next
panjang = Len(xgAcak())
If Err.Number <> 0 Or panjang <> 64 Then
Baris "GAGAL", "Scriptlet.TypeLib: " & Err.Description
Err.Clear
Else
Baris "OK", "Pembuat kode acak (Scriptlet.TypeLib)"
End If
On Error GoTo 0
If xgSha256Hex("abc") = "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad" Then
Baris "OK", "SHA-256 (PKCE dan tanda tangan webhook)"
Else
Baris "GAGAL", "SHA-256 memberi hasil salah di server ini"
End If
' 2. Koneksi HTTPS ke X-Guard
xgPanggil "GET", XG_ISSUER & "/.well-known/openid-configuration", "", ""
If Len(xgHttpGalat) > 0 Then
Baris "GAGAL", "HTTPS ke X-Guard: " & xgHttpGalat
ElseIf xgHttpStatus <> 200 Then
Baris "GAGAL", "HTTPS ke X-Guard: HTTP " & xgHttpStatus & " (periksa XG_ISSUER)"
ElseIf xgJsonTeks(xgHttpTeks, "issuer") <> XG_ISSUER Then
Baris "GAGAL", "Issuer X-Guard " & xgJsonTeks(xgHttpTeks, "issuer") & " tidak sama dengan XG_ISSUER"
Else
Baris "OK", "HTTPS ke X-Guard dan pembacaan JSON"
If xgJsonTeks(xgHttpTeks, "authorization_endpoint") <> XG_AUTH_URL Or _
xgJsonTeks(xgHttpTeks, "token_endpoint") <> XG_TOKEN_URL Or _
xgJsonTeks(xgHttpTeks, "end_session_endpoint") <> XG_LOGOUT_URL Then
Baris "GAGAL", "XG_AUTH_URL, XG_TOKEN_URL, atau XG_LOGOUT_URL tidak sama dengan alamat dari X-Guard"
Else
Baris "OK", "Alamat login, token, dan logout"
End If
If xgSelisihJam(xgHttpTanggal) > 60 Then
Baris "GAGAL", "Jam server selisih " & xgSelisihJam(xgHttpTanggal) & " detik dari X-Guard. Perbaiki sinkronisasi waktu."
Else
Baris "OK", "Jam server (selisih " & xgSelisihJam(xgHttpTanggal) & " detik)"
End If
End If
' 3. Client ID dan secret. Code sengaja palsu: invalid_grant = kredensial benar, invalid_client = kredensial salah.
xgPanggil "POST", XG_TOKEN_URL, "grant_type=authorization_code&code=kode-palsu-uji" & _
"&redirect_uri=" & xgUrlEncode(XG_REDIRECT_URI) & "&code_verifier=" & xgAcak(), xgBasicAuth()
If Len(xgHttpGalat) > 0 Then
Baris "GAGAL", "Token endpoint: " & xgHttpGalat
Else
Select Case xgJsonTeks(xgHttpTeks, "error")
Case "invalid_grant"
Baris "OK", "Client ID dan secret diterima X-Guard"
Case "invalid_client"
Baris "GAGAL", "Client ID atau secret ditolak. Periksa xg_config.asp, atau buat secret baru di konsol"
Case Else
Baris "GAGAL", "Jawaban token endpoint: HTTP " & xgHttpStatus & " " & Left(xgHttpTeks, 100)
End Select
End If
' 4. Webhook (opsional)
If Len(XG_WEBHOOK_SECRET) = 0 Then
Baris "INFO", "Webhook tidak dipakai (XG_WEBHOOK_SECRET kosong)"
ElseIf Left(XG_WEBHOOK_SECRET, 5) <> "xgwh_" Then
Baris "GAGAL", "XG_WEBHOOK_SECRET bukan secret webhook X-Guard (diawali xgwh_)"
Else
Baris "OK", "Secret webhook terpasang"
End If
Response.Write ""
%>