我們遇到了令刷新令牌發揮作用的問題。最初,用戶使用ADAL的Web視圖登錄並獲取令牌。該令牌用於在Web API過期之前調用它。如我們所期望的那樣,如果沒有獲得Web提示的新令牌,服務器上會記錄一個錯誤,並且用戶會再次顯示登錄Web提示。使用ADFS 3.0,ADAL,Web API和Xamarin刷新令牌
從我們已閱讀的內容中,您應該在每次調用時使用AcquireTokenAsync並讓ADAL處理令牌/刷新令牌。
這是ADAL嘗試使用刷新令牌獲取新令牌時在服務器上發生的錯誤。我們試圖尋找那個錯誤,但沒有發現太多。
在OAuth令牌請求期間遇到錯誤。
附加數據
異常詳細信息: Microsoft.IdentityServer.Web.Protocols.OAuth.Exceptions.OAuthInvalidScopeException: MSIS9330:接收OAuth訪問令牌請求是無效的。在請求中接收到' '範圍'參數,並且AD FS不支持任何範圍 。收到的範圍:'openid'。在 Microsoft.IdentityServer.Web.Protocols.OAuth.OAuthToken.OAuthRefreshTokenRequestContext.Validate()
難道我們失去了一些東西?有沒有辦法設置範圍,或者這只是不適用於我們正在使用的當前版本? ADAL是將範圍發佈到ADFS服務器的人。
我們不使用Azure AD!
從視圖控制器在iOS應用呼叫:
PlatformParameters p = new PlatformParameters(this);
AuthenticationContext authContext = new AuthenticationContext("https://adfs.domain.com/adfs", false);
AuthenticationResult _authResult = await authContext.AcquireTokenAsync("https://webapi.domain.com", "E1CF1107-FF90-4228-93BF-26052DD2C714", 「http://anarbitraryreturnuri/」, p);
Startup.Auth.cs在網頁API:
public void ConfigureAuth(IAppBuilder app)
{
app.UseActiveDirectoryFederationServicesBearerAuthentication(
new ActiveDirectoryFederationServicesBearerAuthenticationOptions
{
MetadataEndpoint = ConfigurationManager.AppSettings["ida:AdfsMetadataEndpoint"],
TokenValidationParameters = new TokenValidationParameters()
{
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"],
},
}
}
這裏是我們的作品:
- 帶有ADFS 3.0的Windows Server 2012 R2(內部部署)
- SsoLifetime = 60
- TokenLifetime(依賴方)= 10
- ADAL 3.13.8
- .NET的Web API
- Xamarin iOS應用
下面是一些職位,我們用得到這個工作: