새로 고침 토큰을 가져 오는 데 문제가 있습니다. 처음에는 ADAL의 웹보기를 사용하여 로그인하고 토큰을받습니다. 이 토큰은 만기 될 때까지 웹 API를 호출하는 데 사용됩니다. 예상대로 웹 프롬프트없이 새 토큰을 얻는 대신 오류가 서버에 기록되고 사용자에게 로그인 웹 프롬프트가 다시 표시됩니다.ADFS 3.0, ADAL, Web API 및 Xamarin으로 토큰 새로 고침
우리가 읽은 바에 따르면 매 통화마다 AcquireTokenAsync를 사용하고 ADAL이 토큰/새로 고침 토큰을 처리하도록되어 있습니다.
ADAL이 새로 고침 토큰을 사용하여 새 토큰을 얻으려고 할 때 서버에서 발생하는 오류입니다. 우리는 그 오류를 찾으려고했지만 많은 것을 찾지 못했습니다.
OAuth 토큰 요청 중 오류가 발생했습니다.
추가 데이터
예외 정보 : Microsoft.IdentityServer.Web.Protocols.OAuth.Exceptions.OAuthInvalidScopeException : MSIS9330 :받은 OAuth 액세스 토큰 요청이 유효하지 않습니다. 'scope'매개 변수가 요청에 수신되었으며 AD FS에서 어떤 범위도 지원하지 않습니다 ( ). 받은 범위 : 'openid'. Microsoft.IdentityServer.Web.Protocols.OAuth.OAuthToken.OAuthRefreshTokenRequestContext.Validate()
에서 우리는 뭔가를 놓치고 있습니까? 범위를 설정하는 방법이 있습니까? 아니면 현재 사용중인 버전에서만 작동하지 않습니까? ADAL은 ADFS 서버에 대한 범위를 가진 게시물을 만듭니다.
우리는 Azure AD를 사용하지 않습니다!
iOS 앱의 뷰 컨트롤러에서 전화 : 웹 API에
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 : 여기
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 웹 API
- 자 마린 iOS 앱
여기에 우리가 얻을하는 데 사용되는 게시물의 일부입니다 작업 :