cordova-plugin-ms-adal
Version:
Provides Microsoft Azure Active Directory (ADAL) OAuth client.
215 lines (185 loc) • 10 kB
TypeScript
// Type definitions for Active Directory Authentication Library (ADAL) plugin for Apache Cordova
// Project: https://github.com/AzureAD/azure-activedirectory-library-for-cordova
// Definitions by: Kai Walter https://github.com/KaiWalter
// Definitions: ...
declare namespace Microsoft {
namespace ADAL {
interface IUserInfo {
displayableId: string,
userId: string,
familyName: string,
givenName: string,
identityProvider: string,
passwordChangeUrl: string,
passwordExpiresOn: Date,
uniqueId: string,
}
interface ITokenCache {
contextAuthority: string
}
interface ITokenCacheItem {
accessToken: string,
authority: string,
clientId: string,
displayableId: string,
expiresOn: Date,
isMultipleResourceRefreshToken: boolean,
resource: string,
tenantId: string,
userInfo: IUserInfo
}
interface IPromise {
then(doneCallBack: () => void, failCallBack?: (message: string) => void);
}
interface IPromiseTokenCacheItems {
then(doneCallBack: (tokenCacheItems: ITokenCacheItem[]) => void, failCallBack?: (message: string) => void);
}
class TokenCache implements ITokenCache {
contextAuthority: string
/**
* Clears the cache by deleting all the items.
*
* @returns {Promise} Promise either fulfilled when operation is completed or rejected with error.
*/
clear(): IPromise;
/**
* Gets all cached items.
*
* @returns {Promise} Promise either fulfilled with array of cached items or rejected with error.
*/
readItems(): IPromiseTokenCacheItems;
/**
* Deletes cached item.
*
* @param {TokenCacheItem} item Cached item to delete from cache
*
* @returns {Promise} Promise either fulfilled when operation is completed or rejected with error.
*/
deleteItem(item: ITokenCacheItem): IPromise;
}
interface IAuthenticationResult {
accessToken: string,
accessTokenType: string,
expiresOn: Date,
idToken: string,
isMultipleResourceRefreshToken: boolean,
status: string,
statusCode: string,
tenantId: string,
userInfo: IUserInfo
}
class AuthenticationResult implements IAuthenticationResult {
accessToken: string;
accessTokenType: string;
expiresOn: Date;
idToken: string;
isMultipleResourceRefreshToken: boolean;
status: string;
statusCode: string;
tenantId: string;
userInfo: IUserInfo;
/**
* Creates authorization header for web requests.
*
* @returns {String} The authorization header.
*/
createAuthorizationHeader(): string;
}
interface IPromiseAuthenticationResult {
then(doneCallBack: (context: IAuthenticationResult) => void, failCallBack?: (message: string) => void);
}
interface IAuthenticationContext {
authority: string,
validateAuthority: boolean,
tokenCache: TokenCache
/**
* Acquires token using interactive flow if needed. It checks the cache to return existing result
* if not expired. It tries to use refresh token if available. If it fails to get token with
* refresh token, it will remove this refresh token from cache and start authentication.
*
* @param {String} resourceUrl Resource identifier
* @param {String} clientId Client (application) identifier
* @param {String} redirectUrl Redirect url for this application
* @param {String} userId User identifier (optional)
* @param {String} extraQueryParameters
* Extra query parameters (optional)
* Parameters should be escaped before passing to this method (e.g. using 'encodeURI()')
*
* @returns {Promise} Promise either fulfilled with AuthenticationResult object or rejected with error
*/
acquireTokenAsync(resourceUrl: string, clientId: string, redirectUrl: string, userId?: string, extraQueryParameters?: string): IPromiseAuthenticationResult;
/**
* Acquires token WITHOUT using interactive flow. It checks the cache to return existing result
* if not expired. It tries to use refresh token if available. If it fails to get token without
* displaying UI it will fail. This method guarantees that no UI will be shown to user.
*
* @param {String} resourceUrl Resource identifier
* @param {String} clientId Client (application) identifier
* @param {String} userId User identifier (optional)
*
* @returns {Promise} Promise either fulfilled with AuthenticationResult object or rejected with error
*/
acquireTokenSilentAsync(resourceUrl: string, clientId: string, userId: string): IPromiseAuthenticationResult;
}
interface IPromiseAuthenticationContext {
then(doneCallBack: (context: IAuthenticationContext) => void, failCallBack?: (message: string) => void);
}
class AuthenticationContext implements IAuthenticationContext {
authority: string;
validateAuthority: boolean;
tokenCache: TokenCache;
/**
* Constructs context to use with known authority to get the token. It reuses existing context
* for this authority URL in native proxy or creates a new one if it doesn't exists.
* Corresponding native context will be created at first time when it will be needed.
*
* @param {String} authority Authority url to send code and token requests
* @param {Boolean} validateAuthority Validate authority before sending token request
* When context is being created syncronously using this constructor
* validateAuthority in native context will be disabled to prevent
* context initialization failure
*
* @returns {Object} Newly created authentication context.
*/
constructor(authority: string, validateAuthority?: boolean);
/**
* Constructs context asynchronously to use with known authority to get the token.
* It reuses existing context for this authority URL in native proxy or creates a new one if it doesn't exists.
*
* @param {String} authority Authority url to send code and token requests
* @param {Boolean} validateAuthority Validate authority before sending token request. True by default
*
* @returns {Promise} Promise either fulfilled with newly created authentication context or rejected with error
*/
static createAsync(authority: string, validateAuthority?: boolean): IPromiseAuthenticationContext;
/**
* Acquires token using interactive flow if needed. It checks the cache to return existing result
* if not expired. It tries to use refresh token if available. If it fails to get token with
* refresh token, it will remove this refresh token from cache and start authentication.
*
* @param {String} resourceUrl Resource identifier
* @param {String} clientId Client (application) identifier
* @param {String} redirectUrl Redirect url for this application
* @param {String} userId User identifier (optional)
* @param {String} extraQueryParameters
* Extra query parameters (optional)
* Parameters should be escaped before passing to this method (e.g. using 'encodeURI()')
*
* @returns {Promise} Promise either fulfilled with AuthenticationResult object or rejected with error
*/
acquireTokenAsync(resourceUrl: string, clientId: string, redirectUrl: string, userId?: string, extraQueryParameters?: string): IPromiseAuthenticationResult;
/**
* Acquires token WITHOUT using interactive flow. It checks the cache to return existing result
* if not expired. It tries to use refresh token if available. If it fails to get token without
* displaying UI it will fail. This method guarantees that no UI will be shown to user.
*
* @param {String} resourceUrl Resource identifier
* @param {String} clientId Client (application) identifier
* @param {String} userId User identifier (optional)
*
* @returns {Promise} Promise either fulfilled with AuthenticationResult object or rejected with error
*/
acquireTokenSilentAsync(resourceUrl: string, clientId: string, userId: string): IPromiseAuthenticationResult;
}
}
}