Exemple #1
0
        public async Task <TokenCacheInfo> GetTokenByResource(string resource)
        {
            var cacheInfo = await GetRecentToken(resource);

            if (cacheInfo != null)
            {
                return(cacheInfo);
            }

            cacheInfo = await GetToken(null, null);

            var            tokenCache = TokenStorage.GetCache();
            TokenCacheInfo found;

            if (tokenCache.TryGetValue(cacheInfo.TenantId, resource, out found))
            {
                cacheInfo = found;
            }
            else
            {
                cacheInfo = await GetAuthorizationResult(tokenCache, tenantId : cacheInfo.TenantId, user : cacheInfo.DisplayableId, resource : resource);

                this.TokenStorage.SaveCache(tokenCache);
            }

            this.TokenStorage.SaveRecentToken(cacheInfo, resource);
            return(cacheInfo);
        }