使用ADAL进行Office 365 AD身份验证:缺少参数“client_secret或client_assertion”

时间:2015-09-16 13:59:53

标签: ios objective-c oauth office365 adal

我正在尝试在Microsoft Office 365 Azure AD中进行身份验证。出于我的目的,我正在使用Microsoft ADAL library for Objective-C 1.0版。以下是示例代码:

ADAuthenticationError *error;
ADAuthenticationContext *authContext = [ADAuthenticationContext authenticationContextWithAuthority:@"https://login.microsoftonline.com/...." error:&error];

[authContext acquireTokenWithResource:@"https://login.microsoftonline.com/..."
                     clientId: @"AAAAAA-AAAA-AAAAA-AAAA-AAAAA";
                  redirectUri:[NSURL URLWithString:@"https://localhost:11111"];
                       userId:nil
         extraQueryParameters:@"client_secret=AAAAABBBBBCCCCC"
              completionBlock:^(ADAuthenticationResult *result) {
                  if (AD_SUCCEEDED != result.status){
                      NSLog(@"%@", result.error.errorDetails);
                  } else {
                      NSLog(@"%@", result.accessToken);
                  }
}];

我得到了

  

错误 - AADSTS90014:请求正文必须包含以下参数:'client_secret或client_assertion'。

1 个答案:

答案 0 :(得分:0)

对于ObjC的ADAL仅适用于不使用机密的公共客户端 - 无论如何,通过extraquery参数添加它无济于事。您是如何在Azure AD中注册应用程序的?我怀疑您可能已将其注册为Web应用程序(这是一个机密客户端,在请求令牌时需要客户端信用),而它需要注册为本机客户端。