2016-03-25 11 views
1

Benim senaryoda, kullanıcı, AAD uygulamasının Microsoft grafik API'sini kullanarak bir sunucu işleminde zaman zaman e-postalarını okuma izni verir. Kullanıcı izin verirken, authContext.GetAuthorizationRequestURL ve authContext.AcquireTokenByAuthorizationCodeAsync kullanarak bir jeton alıyorum. Bir erişim belirtecine zaman sonra, aşağıdaki çalıştırma:Sunucudan sunucuya çağrı için ADAL kimlik doğrulama belirteci doğru şekilde nasıl düzeltilir

TokenCache tokenCache; // deserialized 
    AuthenticationContext authContext = CreateAuthContext(authority, tokenCache); 
    AuthenticationResult authResult = await authContext.AcquireTokenAsync(
      resource, 
      new ClientCredential(clientId, clientKey)); 
    return authResult.AccessToken; 

Ne yazık ki çağrı, MS Grafik API'leri elde edilen accesstoken 403 (Yasak) bir döner.

Doğru bilgilerle AcquireToken *() ürününün doğru lezzetini aramadığım izlenimini alıyorum. Bu senaryoyu bilen var mı?

cevap

0

Soruda belirtilen AcquireTokenAsync aşırı yüklenmesi, yalnızca bir uygulama belirteci getirecektir. ClientCredential ve UserIdentifier parametrelerini kabul eden bir AcquireToken aşırı yükü gerekli olan şeydir, ancak maalesef böyle bir aşırı yük mevcut değildir. Ancak, erişim belirtecini süresi doluncaya kadar kullanmaya devam edebilirsiniz (AuthenticationResult.ExpiresOn kullanarak denetle) ve sonra yeni bir erişim belirteci almak için AcquireTokenByRefreshTokenAsync API ile AuthenticationResult.RefreshToken öğesini kullanabilirsiniz.

+0

Harika, teşekkürler. Jetonun aptallıklarını anladım. Kodumun bir UserAssertion yaratıp geçirerek çalışmasını sonlandırdım: bir önceki erişim belirteci, kullanıcı adı ve şifreli dize: ''urn: ietf: params: oauth: grant-type: jwt-bearer "'. Çalışıyor gibi görünüyor. Bu çözümün geçerliliği hakkında yorum yapabilir misiniz? – Charles

+0

Çözüm bana iyi geliyor. –

+0

Aslında benim için işe yaramadı. Şu anda AcquireTokenUsingRefreshToken() kullanımını içeren bir çözüm var gibi görünüyor. – Charles

İlgili konular