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 件のコメント :
コメントを投稿