public async Task ProvisionAccessTokenAsync_AssertionTokenIsSigned() { var claims = new List <Claim> { new Claim(Constants.Claims.ISSUER, TestData.ISSUER), new Claim(Constants.Claims.TENANT_ID, TestData.TENANT_ID.ToString()), new Claim(Constants.Claims.USER_ID, TestData.USER) }; var scopes = new Scope[] { }; await m_accessTokenProvider .ProvisionAccessTokenAsync(claims, scopes) .ConfigureAwait(false); var publicKeys = (await m_publicKeyDataProvider.GetAllAsync().ConfigureAwait(false)).ToList(); string expectedKeyId = publicKeys.First().Id.ToString(); string actualKeyId = m_actualAssertion.Header.Kid; Assert.AreEqual(1, publicKeys.Count); Assert.AreEqual(expectedKeyId, actualKeyId); AssertClaimEquals(m_actualAssertion, Constants.Claims.ISSUER, TestData.ISSUER); AssertClaimEquals(m_actualAssertion, Constants.Claims.TENANT_ID, TestData.TENANT_ID.ToString()); AssertClaimEquals(m_actualAssertion, Constants.Claims.USER_ID, TestData.USER); }
async Task <IAccessToken> IAccessTokenProvider.ProvisionAccessTokenAsync( IEnumerable <Claim> claims, IEnumerable <Scope> scopes, ICache cache ) { if (cache == null) { cache = new NullCache(); } claims = claims.ToList(); scopes = scopes.ToList(); string cacheKey = TokenCacheKeyBuilder.BuildKey(claims, scopes); CacheResponse cacheResponse = await cache.GetAsync(cacheKey).SafeAsync(); if (cacheResponse.Success) { SecurityToken securityToken = m_tokenHandler.ReadToken(cacheResponse.Value); if (securityToken.ValidTo > DateTime.UtcNow.Add(m_tokenRefreshGracePeriod)) { return(new AccessToken(cacheResponse.Value)); } } IAccessToken token = await m_accessTokenProvider.ProvisionAccessTokenAsync(claims, scopes).SafeAsync(); DateTime validTo = m_tokenHandler.ReadToken(token.Token).ValidTo; await cache.SetAsync(cacheKey, token.Token, validTo - DateTime.UtcNow).SafeAsync(); return(token); }