将 ADAL 库与政府帐户一起使用,授权令牌请求由于服务器超时而失败。需要令牌才能对服务器进行 EWS 调用。正在使用的权限是“ https://logon.microsoftonline.us ”。资源是“ https://outlook.office.us ”。
从公共租户(我们的公司租户)和我们的产品中检索令牌时没有问题。我们使用“ https://logon.microsoftonline.com ”接收令牌。资源是“ https://outlook.office.com ”。
我们可以在“ https://owa.us.af.mil/f5-w-{REDACTED}/adfs/ls/?client-request-id={REDACTED } ”使用相同的凭据访问服务器。但 ADAL 因“ https://federation.us.af.mil/adfs/ls/?login_hint= {REDACTED}.af.mil&client-request-id={REDACTED}&username={REDACTED}.af.mil&wa= wsignin1.0&wtrealm={已删除}"
政府服务器是否有正确的 ADFS 配置?如果是这样,可能的解决方案是什么?
我们的租户设置是否正确?我们是否需要公共应用程序访问的公共租户和政府客户的政府租户?或者这些可以互换吗?
我们设置了一个公共和政府 AAD 应用程序来处理令牌请求。我们认为这可能是问题所在。没变。我还对请求中使用的权限和资源做了一些修改。没变。我什至利用 ADAL 并使用我们的 HTTPS 协议而不是标准的 Apple HTTPS 协议。
下面是使用的上下文设置和令牌调用方法。
let authContext = ADAuthenticationContext(authority: authority, validateAuthority: true, error: &error)
authContext?.credentialsType = AD_CREDENTIALS_EMBEDDED
authContext?.acquireToken(withResource: self.resource, clientId: self.clientId, redirectUri: self.redirectUri,
userId: self.userID!, completionBlock: { result in })
此时令牌请求将始终超时:
ADAL 2.7.5 iOS Sim 12.1 [2018-12-12 17:14:38 - F06F784C-7F5B-4231-BE34-714AF8204357] -webAuthDidFailWithError: Error Domain=NSURLErrorDomain Code=-1001“请求超时。” UserInfo={NSUnderlyingError=0x600002fa5380 {错误域=kCFErrorDomainCFNetwork Code=-1001“请求超时。” UserInfo={NSErrorFailingURLStringKey= https://federation.us.af.mil/adfs/ls/?login_hint= {REDACTED}.af.mil&client-request-id={REDACTED}&username={REDACTED}.af.mil&wa=wsignin1 .0&wtrealm={已编辑}
用户体验带有空白屏幕的弹出窗口。该窗口通常会显示要求允许使用该应用程序的文本。大约 60 秒后出现超时消息。