Skip to content

Latest commit

 

History

History
59 lines (45 loc) · 1.87 KB

auth.md

File metadata and controls

59 lines (45 loc) · 1.87 KB

Serverless Inc. authentication utilities

login

Initialize login session (which opens login window in a browser). After user logs in, CLI receives refresh token, which in furtger turn can be used to retrieve short living id tokens (for further interaction with Serverless Inc. API)

const login = require('@serverless/utils/auth/login');
...
await login();
// User logged in successfully

logout

Logout (clear stored refresh token). Returns true if there was a logged in user, false in case of no-op.

const logout = require('@serverless/utils/auth/logout');
...
logout();
// No logged in user

resolveToken

Resolve valid authentication token required for any exchange with Serverless Inc. API. Once resolved, tokens are cached for instant resolution until they expire.

Note: Resolved token should never be stored in outer logic. In all cases all calls to API should hit this utility directly to retrieve the id token.

Token is either an id token resolved via refresh token stored for logged-in CLI users or it's an org token assumed from SLS_ORG_TOKEN environment variable where in CI/CD cases non expiring token is expected to be provided

const resolveAuthToken = require('@serverless/utils/auth/resolve-token');
...
const responseData = await someServerlessIncApiCall.request({
  idToken: await resolveAuthToken()
});

resolveMode

Confirm wether we're authenticated and with what kind of authentication (either as users, or as an org)

const resolveAuthMode = require('@serverless/utils/auth/resolve-mode');
...
switch (await resolveAuthMode()) {
  case "user":
    console.log("We're authenticated as a logged-in user");
    break;
  case "org":
    console.log("We're authenticated with org token");
    break;
  default:
    console.log("We're not authenticated");
}