ADAL身份验证要求设备受控

时间:2018-09-11 10:30:23

标签: ios objective-c azure azure-active-directory adal

我已经为ADAL身份验证设置了一个演示应用程序。我们公司要求安装InTune应用:https://itunes.apple.com/us/app/intune-company-portal/id719171358?mt=8

在安装和设置InTune之后,我已经使用自己开发的ADAL安装了该演示:

  1. 将ADAL添加为Pod库

  2. 在我的Azure门户(https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps)中添加了重定向URI(一个具有schema:// bundle_id,一个具有msauth:// code / schema%3A%2F%2Fbundle_id)

    < / li>
  3. 已添加到应用的info.plist:

    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>msauth</string>
    </array>
    

4。添加到应用程序的info.plist

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string>bundle_id</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>schema</string>
        </array>
    </dict>
</array>
  1. 添加了[_authContext setCredentialsType:AD_CREDENTIALS_AUTO];,以将inTune App Portal用于经纪人身份验证。

  2. 使用以下方法创建身份验证:

    ADAuthenticationError *error = nil;
     _authContext = [ADAuthenticationContext authenticationContextWithAuthority:@"https://login.microsoftonline.com/common" error:&error];  
    [_authContext setCredentialsType:AD_CREDENTIALS_AUTO];
    
    [_authContext acquireTokenWithResource:@"https://graph.microsoft.com"
                              clientId:@"my_client_id"                          // Comes from App Portal
                           redirectUri:[NSURL URLWithString:@"schema://bundle_id"] // Comes from App Portal
                       completionBlock:^(ADAuthenticationResult *result)
    {
       NSLog(result.accessToken);
     }];
    

应用程序将正确提示对用户的Microsoft身份验证,该身份将在公司页面上的microsofth身份验证上重定向,但是在身份验证之后,结果是:

enter image description here

1 个答案:

答案 0 :(得分:1)

为使Azure AD确定要管理设备以满足条件访问要求,必须使用代理身份验证。通过指定AD_CREDENTIALS_AUTO(已完成),将msauth添加到LSApplicationQueriesSchemes(已完成)并为应用程序配置适当的回调URI方案(您也已完成)来启用此功能。完成)。

将使用的代理是Microsoft Authenticator应用。如果您尚未安装此程序(由ADALios框架通过检查是否有响应msauth网址方案的应用来确定),则ADAL库将默认在网络视图中显示登录表单在您的应用中。

由于您的应用无法确定是否对设备进行管理,因此您将获得“身份验证成功但设备未注册”的结果。

一旦安装了Microsoft Authenticator应用程序,您将看到它已打开以响应身份验证请求。该应用可以确定您设备的注册状态,然后您应使用成功的令牌将其返回到您的应用。

可以在库文档中更明确地指出安装身份验证器应用程序的要求,但其中提到:

  

Brokered Authentication

     

如果您的应用需要条件访问或证书身份验证(当前处于预览状态)支持,则必须设置AuthenticationContext和redirectURI才能与 Azure Authenticator 应用进行对话。