Re: External Re: Auth 2.0
Brad Stone <[email protected]>
| Newsgroups | gmane.comp.lang.as400.rpg |
|---|---|
| Message-ID | <CAAGV8OfH6AX9FOBRhEFPp4vaS-6-H5eAGQ+XOK+97rY+8gbfDg@mail.gmail.com> |
No, the HTTP code should looke like this: =================== POST /ca4f5969-c10f-40d4-8127-e74b691f95de/oauth2/v2.0/token <https://login.microsoftonline.com/ca4f5969-c10f-40d4-8127-e74b691f95de/oauth2/v2.0/token> HTTP/1.1 Host: login.microsoftonline.com <https://login.microsoftonline.com/ca4f5969-c10f-40d4-8127-e74b691f95de/oauth2/v2.0/token> Content-Type: application/x-www-form-urlencoded Content-Length: 187 grant_type=client_credentials&client_id=Our Client ID&client_secret=Our Secret&scope=https://tffproduction.onmicrosoft.com/code/.default ================== In postman it's available in Postman in the far right after making the request. The symbol is </>. Then there's a dropdown you select HTTP. For HTTPAPI, I'm not sure how to get that debug data.. it should be somewhere.. On Wed, Oct 15, 2025 at 8:31 AM (WalzCraft) Jerry Forss < [email protected]> wrote: > I am copying what I do for FedEx. They use there own URL. > TForce uses Microsoft. > > I have no training on this Auth stuff. Just try and figure out as I go. > > -----Original Message----- > From: RPG400-L <[email protected]> On Behalf Of > (WalzCraft) Jerry Forss > Sent: Wednesday, October 15, 2025 8:24 AM > To: RPG programming on IBM i <[email protected]> > Subject: RE: External Re: Auth 2.0 > > From postman > > curl --location ' > https://login.microsoftonline.com/ca4f5969-c10f-40d4-8127-e74b691f95de/oauth2/v2.0/token' > \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header > 'Authorization: Bearer eyJ0e... g' \ --header 'Cookie: > fpc=Ajxh5I5InBtGiamgtxBp0gFoxTAqAgAAAAeSgeAOAAAA; stsservicecookie=estsfd; > x-ms-gateway-slice=estsfd' \ --data-urlencode 'client_id=Our Client ID' \ > --data-urlencode 'client_secret=Our Secret' \ --data-urlencode 'scope= > https://tffproduction.onmicrosoft.com/code/.default' \ --data-urlencode > 'grant_type=client_credentials' \ --data-urlencode '=' > > > FormData from debug > > grant_type=client_credentials&client_id=Our Client ID&client_secret=Our > Secret&scope=https://tffproduction.onmicrosoft.com/code/.default > > -----Original Message----- > From: RPG400-L <[email protected]> On Behalf Of Brad > Stone > Sent: Wednesday, October 15, 2025 7:57 AM > To: RPG programming on IBM i <[email protected]> > Subject: Re: External Re: Auth 2.0 > > Sorry, I should have been more clear. > > Post the exact HTTP request that is being made by HTTPAPI. There should > be a feature to do that in HTTPAPI (GETURI has it). > > Then compare it to the HTTP request in POSTMAN. That can be found > clicking the <> in Postman. You'll see the exact HTTP request. > > On Wed, Oct 15, 2025 at 7:20 AM (WalzCraft) Jerry Forss < > [email protected]> wrote: > > > The log > > > > HTTPAPI Ver 1.41 released 2020-06-05 > > NTLM Ver 1.4.0 released 2014-12-22 > > OS/400 Ver V7R4M0 > > > > http_persist_open(): entered > > http_long_ParseURL(): entered > > DNS resolver retrans: 2 > > DNS resolver retry : 2 > > DNS resolver options: x'00000136' > > DNS default domain: CABINET.COM > > DNS server found: ip > > DNS server found: ip > > DNS server found: ip > > Nagle's algorithm (TCP_NODELAY) disabled. > > SNI hostname set to: login.microsoftonline.com > > > > ---------------------------------------------------------------------- > > --------------- Dump of server-side certificate information: > > > > ---------------------------------------------------------------------- > > --------------- > > Cert Validation Code = 6000 > > -----BEGIN CERTIFICATE----- > > -----END CERTIFICATE----- > > Serial Number: 05:19:33:39:5D:75:58:5B:65:48:97:4F:05:8F:41:1E > > Common Name: stamp2.login.microsoftonline.com > > Country: US > > State/Province: Washington > > Locality: Redmond > > Org Unit: Microsoft Corporation > > Issuer CN: DigiCert SHA2 Secure Server CA Issuer Country: US Issuer > > Org: DigiCert Inc > > Version: 3 > > not before: 20250918190000 > > Unknown Field: 19:00:00 18-09-2025 > > not after: 20260318185959 > > Unknown Field: 18:59:59 18-03-2026 > > pub key alg: 1.2.840.113549.1.1.1 > > signature algorithm: 1.2.840.113549.1.1.11 Unknown Field: > > 0382010F003082010A0282010100C9FE08BC2BCD9BF41D6797FBACE5DB39F2BBAB8E35 > > 2C8C53502D7467CEEF853C1DB306AE48E8E9EBDCF86367505526B50596ADCE7994B034 > > 26F964788206DEB40145613D351CEC136C239D4F1105D650E46CB110FA9499D6CE0922 > > 5082812FB2A9BD42A3E13C336764A36369BD15E10532B5E3C683191E9B7FBF651601EB > > 8F74158BF11D240B703C40550EB553680A586FF3CB264F72173AB4DD172BC9AC61AED0 > > CDC6738B2588D88185A7B8CE126F0D6470699347F268144EBEF63885EE418152B6DA06 > > 313D298DDB085861F7A93AD02F40B75FFE5F93419A93AE8F33190B6EB8E8A102796D7A > > 384BC25103701DFD4810C2BADA6A428249EE9A5C9C7A985D950203010001 > > Unknown Field: 2048 > > Unknown Field: B9A926D3DE2ADA0D4C539F61F057548D Unknown Field: > > 1.2.840.113549.2.5 Unknown Field: > > 6A141EA7819496385EF008CE7F6C9345422A4C3B > > Unknown Field: > > 505A94BD9D8692F45222ABFA3084857CC47D087B57E7CDFACE88527921627F9A > > Unknown Field: 5 > > Unknown Field: stamp2.login.microsoftonline.com Unknown Field: 0 > > Unknown Field: 1.3.6.1.5.5.7.3.2 Unknown Field: 1.3.6.1.5.5.7.3.1 > > Unknown Field: 2.23.140.1.2.2 Unknown Field: http://ocsp.digicert.com > > > > Protocol Used: TLS Version 1.2 > > http_persist_req(POST) entered. > > http_long_ParseURL(): entered > > http_long_ParseURL(): entered > > do_oper(POST): entered > > There are 0 cookies in the cache > > POST /code/oauth2/v2.0/token HTTP/1.1 > > Host: login.microsoftonline.com > > User-Agent: http-api/1.41 > > Content-Type: application/x-www-form-urlencoded > > Content-Length: 221 > > application/x-www-form-urlencoded > > > > > > senddoc(): entered > > grant_type=client_credentials&client_id=client&client_secret=secret&sc > > ope= https://tffproduction.onmicrosoft.com/code/.default > > recvresp(): entered > > HTTP/1.1 400 Bad Request > > Content-Type: text/html; charset=us-ascii > > Date: Tue, 14 Oct 2025 17:36:57 GMT > > Connection: close > > Content-Length: 339 > > > > > > SetError() #13: HTTP/1.1 400 Bad Request > > recvresp(): end with 400 > > recvdoc parms: identity 339 > > header_load_cookies() entered > > recvdoc(): entered > > SetError() #0: > > recvdoc(): Receiving 339 bytes. > > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"" > > http://www.w3.org/TR/html4/strict.dtd"> > > <HTML><HEAD><TITLE>Bad Request</TITLE> <META HTTP-EQUIV="Content-Type" > > Content="text/html; charset=us-ascii"></HEAD> <BODY><h2>Bad Request - > > Invalid Header</h2> <hr><p>HTTP Error 400. The request has an invalid > > header name.</p> </BODY></HTML> > > > > SetError() #13: HTTP/1.1 400 Bad Request > > http_close(): entered > > > > -----Original Message----- > > From: RPG400-L <[email protected]> On Behalf Of Brad > > Stone > > Sent: Tuesday, October 14, 2025 1:40 PM > > To: RPG programming on IBM i <[email protected]> > > Subject: External Re: Auth 2.0 > > > > CAUTION: This email originated from outside of the organization. Do > > not click links or open attachments unless you recognize the sender > > and know the content is safe. > > > > Post the request, not the code if you can. You'll probably see the > issue. > > HTTPAPI must have a "debug" mode, right? > > > > On Tue, Oct 14, 2025 at 11:10 AM Jean-Marc DUVAL via RPG400-L < > > [email protected]> wrote: > > > > > Hi, > > > > > > Why > > > rc = http_req('POST' > > > : APITokenURL > > > : ResponseFile > > > : *omit > > > : *omit > > > : FormData > > > : 'application/x-www-form-urlencoded'); > > > and not > > > rc = http_req('POST' > > > : APITokenURL > > > : ResponseFile > > > : *omit > > > : *omit > > > : FormData > > > : Headers); > > > > > > -----Message d'origine----- > > > De : RPG400-L <[email protected]> De la part de > > > (WalzCraft) Jerry Forss > > > Envoyé : mardi 14 octobre 2025 17:54 À : RPG programming on IBM i > > > <[email protected]> Objet : > > > Auth 2.0 > > > > > > > > > > > > ATTENTION : Ce message provient d'une source EXTERNE. Veuillez > > > n'ouvrir les liens ou pièces jointes que si vous êtes sûr de > > l'expéditeur. > > > > > > > > > > > > Hi All > > > > > > I am trying to build a new API to call TForce for shipping requests > > > that uses Auth 2.0. > > > > > > I have done this in the past for FedEx and works but having issues > > > with TForce. > > > > > > I can get the access token in Postman but is failing when I try from > > > my RPG pgm. > > > I am sure it's just something basic I am not understanding. > > > > > > Postman request > > > > > > Authorization > > > Auth Type 2.0 > > > > > > Body > > > client_id What we got for TForce > > > client_secret What we got for TForce > > > scope What we got for TForce > > > grant_type client_credentials > > > > > > Works fine getting token > > > > > > My RPG code > > > > > > // > > > ==================================================================== > > > == > > > ============== > > > // Prototype SetTokenHeader > > > // > > > ==================================================================== > > > == > > > ============== > > > > > > Dcl-Proc SetTokenHeader; > > > > > > // > > > > > ---------------------------------------------------------------------- > > ------------ > > > // Input Parameters > > > // > > > -------------------------------------------------------------------- > > > -- > > > ------------ > > > > > > Dcl-pi *N; > > > Headers VarChar(2000); > > > End-pi; > > > > > > // > > > > > ---------------------------------------------------------------------- > > ------------ > > > // Local Parameters > > > // > > > -------------------------------------------------------------------- > > > -- > > > ------------ > > > > > > // > > > > > ---------------------------------------------------------------------- > > ------------ > > > // Data Structures > > > // > > > -------------------------------------------------------------------- > > > -- > > > ------------ > > > > > > // > > > > > ---------------------------------------------------------------------- > > ------------ > > > // Mainline > > > // > > > -------------------------------------------------------------------- > > > -- > > > ------------ > > > > > > Headers = 'application/x-www-form-urlencoded' + CRLF; > > > > > > End-Proc; > > > > > > // > > > ==================================================================== > > > == ============== // Prototype CreateToken - Generate Token // > > > ==================================================================== > > > == > > > ============== > > > > > > Dcl-Proc CreateToken; > > > > > > // > > > > > ---------------------------------------------------------------------- > > ------------ > > > // Input Parameters > > > // > > > -------------------------------------------------------------------- > > > -- > > > ------------ > > > > > > // Dcl-pi *n; > > > // Token VarChar(100); > > > // End-pi; > > > > > > // > > > > > ---------------------------------------------------------------------- > > ------------ > > > // Local Parameters > > > // > > > -------------------------------------------------------------------- > > > -- > > > ------------ > > > > > > Dcl-S FormData Varchar(1000); > > > > > > // > > > > > ---------------------------------------------------------------------- > > ------------ > > > // Data Structures > > > // > > > -------------------------------------------------------------------- > > > -- > > > ------------ > > > > > > // Token Response From API Call > > > Dcl-ds TokenResponse Qualified; > > > > > > access_token VarChar(2000); > > > token_type Char(20); > > > expires_in Packed(7 : 0); > > > scope Char(20); > > > > > > End-ds; > > > > > > // > > > > > ---------------------------------------------------------------------- > > ------------ > > > // Mainline > > > // > > > -------------------------------------------------------------------- > > > -- > > > ------------ > > > > > > ResponseFile = %Trim(Path) + 'TForce_Token_Resp.json'; > > > Rc = http_xproc(HTTP_POINT_ADDL_HEADER : %paddr(SetTokenHeader)); > > > > > > FormData = 'grant_type=client_credentials' + > > > '&client_id=' + %Trim(ClientID) + > > > '&client_secret=' + %Trim(APIKeyLive) + > > > '&scope=' + %Trim(APIScope); > > > > > > rc = http_req('POST' > > > : APITokenURL > > > : ResponseFile > > > : *omit > > > : *omit > > > : FormData > > > : 'application/x-www-form-urlencoded'); > > > > > > Fails with RC of 400 > > > > > > Response json > > > > > > !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"" > > > https://urldefense.com/v3/__http://www.w3.org/TR/html4/strict.dtd__;!! > > > J76aczzK!xAjRZysEN8m9RA6wZidwhN2QTclHubpQuBYJVnQc3wqkUxK9ZGhxbLN8iWE > > > QR g0dQzKxgDXGtlOFJ69DFXxs4zi0$ "> <HTML><HEAD><TITLE>Bad > > > Request</TITLE> <META HTTP-EQUIV="Content-Type" > > > Content="text/html; charset=us-ascii"></HEAD> <BODY><h2>Bad Request > > > - Invalid Header</h2> <hr><p>HTTP Error 400. The request has an > > > invalid header name.</p> </BODY></HTML> > > > > > > > > > > > > > > > Subject to Change Notice: > > > > > > WalzCraft reserves the right to improve designs, and to change > > > specifications without notice. > > > > > > Confidentiality Notice: > > > > > > This message and any attachments may contain confidential and > > > privileged information that is protected by law. The information > > > contained herein is transmitted for the sole use of the intended > > recipient(s) and should "only" > > > pertain to "WalzCraft" company matters. If you are not the intended > > > recipient or designated agent of the recipient of such information, > > > you are hereby notified that any use, dissemination, copying or > > > retention of this email or the information contained herein is > > > strictly prohibited and may subject you to penalties under federal > > > and/or state law. If you received this email in error, please notify > > > the sender immediately and permanently delete this email. Thank You > > > > > > WalzCraft PO Box 1748 La Crosse, WI, 54602-1748 > > > https://urldefense.com/v3/__http://www.walzcraft.com__;!!J76aczzK!xA > > > jR > > > ZysEN8m9RA6wZidwhN2QTclHubpQuBYJVnQc3wqkUxK9ZGhxbLN8iWEQRg0dQzKxgDXG > > > tl > > > OFJ69DFfq5xCnQ$ > > > < > > > https://urldefense.com/v3/__http://www.walzcraft.com__;!!J76aczzK!xA > > > jR > > > ZysEN8m9RA6wZidwhN2QTclHubpQuBYJVnQc3wqkUxK9ZGhxbLN8iWEQRg0dQzKxgDXG > > > tl > > > OFJ69DFfq5xCnQ$ > > > > Phone: 1-800-237-1326 > > > -- > > > This is the RPG programming on IBM i (RPG400-L) mailing list To post > > > a message email: [email protected] To subscribe, > > > unsubscribe, or change list options, > > > visit: > > > https://urldefense.com/v3/__https://lists.midrange.com/mailman/listi > > > nf > > > o/rpg400-l__;!!J76aczzK!xAjRZysEN8m9RA6wZidwhN2QTclHubpQuBYJVnQc3wqk > > > Ux K9ZGhxbLN8iWEQRg0dQzKxgDXGtlOFJ69DFXgC-sSS$ > > > or email: [email protected] > > > Before posting, please take a moment to review the archives at > > > https://urldefense.com/v3/__https://archive.midrange.com/rpg400-l__;!! > > > J76aczzK!xAjRZysEN8m9RA6wZidwhN2QTclHubpQuBYJVnQc3wqkUxK9ZGhxbLN8iWE > > > QR > > > g0dQzKxgDXGtlOFJ69DFd1JxbRO$ > > > . > > > > > > Please contact [email protected] for any subscription > > > related questions. > > > > > > -- > > > This is the RPG programming on IBM i (RPG400-L) mailing list To post > > > a message email: [email protected] To subscribe, > > > unsubscribe, or change list options, > > > visit: https://lists.midrange.com/mailman/listinfo/rpg400-l > > > or email: [email protected] > > > Before posting, please take a moment to review the archives at > > > https://archive.midrange.com/rpg400-l. > > > > > > Please contact [email protected] for any subscription > > > related questions. > > > > > > > > -- > > This is the RPG programming on IBM i (RPG400-L) mailing list To post a > > message email: [email protected] To subscribe, unsubscribe, > > or change list options, > > visit: https://lists.midrange.com/mailman/listinfo/rpg400-l > > or email: [email protected] > > Before posting, please take a moment to review the archives at > > https://archive.midrange.com/rpg400-l. > > > > Please contact [email protected] for any subscription > > related questions. > > > > > > > > > > Subject to Change Notice: > > > > WalzCraft reserves the right to improve designs, and to change > > specifications without notice. > > > > Confidentiality Notice: > > > > This message and any attachments may contain confidential and > > privileged information that is protected by law. The information > > contained herein is transmitted for the sole use of the intended > recipient(s) and should "only" > > pertain to "WalzCraft" company matters. If you are not the intended > > recipient or designated agent of the recipient of such information, > > you are hereby notified that any use, dissemination, copying or > > retention of this email or the information contained herein is > > strictly prohibited and may subject you to penalties under federal > > and/or state law. If you received this email in error, please notify > > the sender immediately and permanently delete this email. Thank You > > > > WalzCraft PO Box 1748 La Crosse, WI, 54602-1748 > > www.walzcraft.com<http://www.walzcraft.com> Phone: 1-800-237-1326 > > -- > > This is the RPG programming on IBM i (RPG400-L) mailing list To post a > > message email: [email protected] To subscribe, unsubscribe, > > or change list options, > > visit: https://lists.midrange.com/mailman/listinfo/rpg400-l > > or email: [email protected] > > Before posting, please take a moment to review the archives at > > https://archive.midrange.com/rpg400-l. > > > > Please contact [email protected] for any subscription > > related questions. > > > > > -- > This is the RPG programming on IBM i (RPG400-L) mailing list To post a > message email: [email protected] To subscribe, unsubscribe, or > change list options, > visit: https://lists.midrange.com/mailman/listinfo/rpg400-l > or email: [email protected] > Before posting, please take a moment to review the archives at > https://archive.midrange.com/rpg400-l. > > Please contact [email protected] for any subscription related > questions. > > > > > Subject to Change Notice: > > WalzCraft reserves the right to improve designs, and to change > specifications without notice. > > Confidentiality Notice: > > This message and any attachments may contain confidential and privileged > information that is protected by law. The information contained herein is > transmitted for the sole use of the intended recipient(s) and should "only" > pertain to "WalzCraft" company matters. If you are not the intended > recipient or designated agent of the recipient of such information, you are > hereby notified that any use, dissemination, copying or retention of this > email or the information contained herein is strictly prohibited and may > subject you to penalties under federal and/or state law. If you received > this email in error, please notify the sender immediately and permanently > delete this email. Thank You > > WalzCraft PO Box 1748 La Crosse, WI, 54602-1748 www.walzcraft.com< > http://www.walzcraft.com> Phone: 1-800-237-1326 > -- > This is the RPG programming on IBM i (RPG400-L) mailing list To post a > message email: [email protected] To subscribe, unsubscribe, or > change list options, > visit: https://lists.midrange.com/mailman/listinfo/rpg400-l > or email: [email protected] > Before posting, please take a moment to review the archives at > https://archive.midrange.com/rpg400-l. > > Please contact [email protected] for any subscription related > questions. > > > > > Subject to Change Notice: > > WalzCraft reserves the right to improve designs, and to change > specifications without notice. > > Confidentiality Notice: > > This message and any attachments may contain confidential and privileged > information that is protected by law. The information contained herein is > transmitted for the sole use of the intended recipient(s) and should "only" > pertain to "WalzCraft" company matters. If you are not the intended > recipient or designated agent of the recipient of such information, you are > hereby notified that any use, dissemination, copying or retention of this > email or the information contained herein is strictly prohibited and may > subject you to penalties under federal and/or state law. If you received > this email in error, please notify the sender immediately and permanently > delete this email. Thank You > > WalzCraft PO Box 1748 La Crosse, WI, 54602-1748 > www.walzcraft.com<http://www.walzcraft.com> Phone: 1-800-237-1326 > -- > This is the RPG programming on IBM i (RPG400-L) mailing list > To post a message email: [email protected] > To subscribe, unsubscribe, or change list options, > visit: https://lists.midrange.com/mailman/listinfo/rpg400-l > or email: [email protected] > Before posting, please take a moment to review the archives > at https://archive.midrange.com/rpg400-l. > > Please contact [email protected] for any subscription related > questions. > > -- This is the RPG programming on IBM i (RPG400-L) mailing list To post a message email: [email protected] To subscribe, unsubscribe, or change list options, visit: https://lists.midrange.com/mailman/listinfo/rpg400-l or email: [email protected] Before posting, please take a moment to review the archives at https://archive.midrange.com/rpg400-l. Please contact [email protected] for any subscription related questions.