我已经为ADAL身份验证设置了一个演示应用程序。我们公司要求安装InTune应用:https://itunes.apple.com/us/app/intune-company-portal/id719171358?mt=8
在安装和设置InTune之后,我已经使用自己开发的ADAL安装了该演示:
将ADAL添加为Pod库
在我的Azure门户(https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps)中添加了重定向URI(一个具有schema:// bundle_id,一个具有msauth:// code / schema%3A%2F%2Fbundle_id)
< / li>已添加到应用的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>
添加了[_authContext setCredentialsType:AD_CREDENTIALS_AUTO];
,以将inTune App Portal用于经纪人身份验证。
使用以下方法创建身份验证:
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身份验证上重定向,但是在身份验证之后,结果是:
答案 0 :(得分:1)
为使Azure AD确定要管理设备以满足条件访问要求,必须使用代理身份验证。通过指定AD_CREDENTIALS_AUTO
(已完成),将msauth
添加到LSApplicationQueriesSchemes
(已完成)并为应用程序配置适当的回调URI方案(您也已完成)来启用此功能。完成)。
将使用的代理是Microsoft Authenticator应用。如果您尚未安装此程序(由ADALios框架通过检查是否有响应msauth
网址方案的应用来确定),则ADAL库将默认在网络视图中显示登录表单在您的应用中。
由于您的应用无法确定是否对设备进行管理,因此您将获得“身份验证成功但设备未注册”的结果。
一旦安装了Microsoft Authenticator应用程序,您将看到它已打开以响应身份验证请求。该应用可以确定您设备的注册状态,然后您应使用成功的令牌将其返回到您的应用。
可以在库文档中更明确地指出安装身份验证器应用程序的要求,但其中提到:
如果您的应用需要条件访问或证书身份验证(当前处于预览状态)支持,则必须设置AuthenticationContext和redirectURI才能与 Azure Authenticator 应用进行对话。