Ios ADAL身份验证需要设备管理

Ios ADAL身份验证需要设备管理,ios,objective-c,azure,azure-active-directory,adal,Ios,Objective C,Azure,Azure Active Directory,Adal,我已经为ADAL身份验证设置了一个演示应用程序。我公司请求安装InTune应用程序: 安装和设置InTune后,我已使用我开发的ADAL安装了演示: 添加ADAL作为Pod库 在my Azure门户()中添加了重定向URI(其中一个schema://bundle_id 还有一个msauth://code/schema%3A%2F%2Fbundle_id) 添加到应用程序的info.plist: <key>LSApplicationQueriesSchemes</key>

我已经为ADAL身份验证设置了一个演示应用程序。我公司请求安装InTune应用程序:

安装和设置InTune后,我已使用我开发的ADAL安装了演示:

  • 添加ADAL作为Pod库

  • 在my Azure门户()中添加了重定向URI(其中一个schema://bundle_id 还有一个msauth://code/schema%3A%2F%2Fbundle_id)

  • 添加到应用程序的info.plist:

    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>msauth</string>
    </array>
    
  • 应用程序将正确地向用户提示microsoft身份验证,即在公司页面上的microsofth authentication上重定向,但在进行身份验证后,结果如下:


    对于Azure AD,要确定设备是否被管理以满足条件接收要求,必须使用代理身份验证。这是通过指定
    AD\u CREDENTIALS\u AUTO
    (您已经完成),将
    msauth
    添加到
    lsapplicationqueryschemes
    (您已经完成)并为您的应用程序配置适当的回调URI方案(您也已经完成)来启用的

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

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

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

    在库文档中可以更明确地调用安装authenticator应用程序的要求,但其中提到:

    如果你的应用程序需要条件访问或证书身份验证(当前处于预览中)支持,你必须设置你的AuthenticationContext和redirectURI,以便能够与Azure Authenticator应用程序对话


    您的设备是否受管理?也就是说,它是否显示在Comp Portal应用程序中的“设备”下?是的,它显示在屏幕上,设备显示为“符合要求”?如果点击“立即注册”,会发生什么情况?您是否收到设备已注册的错误消息?这是一个条件接收失败。您应该让AD管理员查看哪些条件访问策略已应用于图形端点和您的应用程序id@Paulw11If我按下按钮,一个带有按钮的HTML页面将打开Intune上的AppStoreappear@Paulw11相同的广告应用程序在Android上使用,没有问题
    <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>
    
    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);
     }];