PROC HTTPでユーザ名とパスワードを指定してアクセストークンを取得するサンプルです。通常はOAUTH_BEARER=SAS_SERVICES を使うことが多いですが、稀にトークン取得したいというニーズがあります。このコードで?な箇所は認証のヘッダーにsas.cli:をエンコードした値を使っているところです。コロンの前がクライアントのツール、コロンの後にパスワードを指定するのが普通ですが、パスワードは空の状態でエンコードしています。このパラメータはSAS Viya CLIからauth loginするときに--verboseで出力されるデバッグの情報を見てそれに倣っています。クライアントのパスワードが空なのは理解できませんが、ログを見るとそうなっています。時間あるときにPostmanでも同じようにパラメータを指定して動くか確かめます。
- /* PROC Sample of using HTTP to obtain an access token. */
- %let client=sas.cli;
- %let cpassword=;
- %let username=alex;
- %let password=hogehoge;
- %let host=%sysget(SAS_SERVICES_URL);
- filename resp "/tmp/foo.txt";
- data _null_;
- attrib buf length=$64;
- buf=put("&client.:&cpassword.", $base64x64.);
- put buf=;
- call symputx('code', compress(buf), 'G');
- run;
- proc http method="POST" url="&host./SASLogon/oauth/token"
- in="grant_type=password%str(&)username=&username.%str(&)password=&password." out=resp timeout=15;
- headers "authorization"="Basic &code"
- "Content-Type"="application/x-www-form-urlencoded";
- run;
- data _null_;
- infile resp truncover;
- input;
- put _INFILE_;
- run;
0 件のコメント :
コメントを投稿