iOS 的 ADAL 是否与 ADFS 3.0 版兼容?

Is ADAL for iOS compatible with ADFS version 3.0?

我正在使用 Objective-C (https://github.com/AzureAD/azure-activedirectory-library-for-objc) 的 AzureAD 库使用 OAuth 2 授权代码授权流程连接到 2012 R2 上的 ADFS 3.0。

我遇到错误:

Error with code: AD_ERROR_DEVELOPER_INVALID_ARGUMENT 
Domain: ADAuthenticationErrorDomain ProtocolCode:(null) 
Details:The argument 'user principal name' is invalid. 
Value:(null). 
Inner error details: Error Domain=ADAuthenticationErrorDomain Code=100 "(null)"

我们有一个 android 应用程序连接成功,所以我认为这不是真正的错误。

我在 iOS 11.3 上使用库的 v2.6.3,在 iPhone 6 和模拟器上都具有相同的结果。

我使用 repo 中包含的 SampleSwiftApp 重现了这个问题,除了配置之外没有任何代码更改。

ADFS v3.0 不支持权限验证,因此我更新了身份验证上下文构造函数:

let authContext = ADAuthenticationContext(authority: AdalAuthority,
                                          error: nil)

至:

let authContext = ADAuthenticationContext(authority: AdalAuthority,
                                          validateAuthority: false,
                                          error: nil)

让它发挥作用。