Hello @freshstarter ,
SAS 9 (including Grid) does not have OAuth support in the SASLogon application which is the one, together with the Metadata server, managing the identities in SAS. SAS Viya has this integration.
This does not mean it is not possible to use OAuth, but it will have to be a code-based solution.
The basics are described here, regardless if it is SAS or not: https://community.snowflake.com/s/article/HOW-TO-OAUTH-TOKEN-GENERATION-USING-SNOWFLAKE-CUSTOM-OAUTH
In SAS you can just use proc http, proc soap, proc json etc to simulate the curl command.
The main aspect is that you would need to configure the external OAuth: https://docs.snowflake.com/en/user-guide/oauth-azure
After that, you can capture your OAuth token within the code and make the connection.
Pragmatically:
Step 1:
%let client_id = <YOUR_CLIENT_ID>;
%let client_secret = <YOUR_CLIENT_SECRET>;
%let token_url = <YOUR_OAUTH_TOKEN_URL>;
filename resp temp;
proc http
method = "POST"
url = "&token_url."
out = resp
headerout = headr
headerout_overwrite;
/* Set the request headers */
headers
'Content-Type' = 'application/x-www-form-urlencoded';
/* Set the request body (OAuth parameters) */
body "grant_type=client_credentials"
"&client_id=&client_id."
"&client_secret=&client_secret.";
run;
/* Read and parse the token from the response */
libname myjson json fileref=resp;
data _null_;
set myjson.root;
call symput('oauth_token', access_token); /* Save token to macro variable */
run;
%put &=oauth_token;
Step 2:
LIBNAME mySnowflakeLibname SASEQUITY
server = "<SNOWFLAKE_ACCOUNT>.snowflakecomputing.com"
port = 443
schema = "<SCHEMA>"
user = "<USERNAME>"
pwd = "&oauth_token."
db = "<DATABASE>"
authDomain = "OAuth";
... View more