我正在使用Azure Active Directory和本机客户端进行概念验证,获取OpenID令牌以对Web应用程序进行身份验证。本机客户端使用Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.AcquireTokenAsync
。我的原生客户端应用程序称为“概念证明”,Web应用程序称为“ PoC服务器”。
用户首次登录时,ADAL打开的嵌入式浏览器要求用户使用此页面授权应用程序:
翻译:
授权概念证明
概念证明
该应用程序的发布者网站:nathexperimental.onmicrosoft.com概念证明需要获得许可
- 访问PoC服务器(PoC服务器)
- 登录并阅读您的个人资料
您已登录为:test2@nathexperimental.onmicrosoft.com
显示详情
[接受] [取消]
如果我现在点击“显示详细信息”链接,则会抛出异常:
Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException: Non-HTTPS url redirect is not supported in webview
en Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenInteractiveHandler.VerifyAuthorizationResult()
en Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenInteractiveHandler.<PreTokenRequest>d__8.MoveNext()
--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---
en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
en System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
en Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenHandlerBase.<RunAsync>d__55.MoveNext()
我不确定它尝试重定向到的非HTTPS网址是什么,但我最好的猜测是它是本机客户端的重定向URI,我设置为hook://login
的意图是实现一个自定义协议处理程序,看看做了什么调用。
这似乎可以通过以下事实得到证实:当我将重定向URI更改为https://codegolf.stackexchange.com
时(它是第一个启用HTTPS的网站...),行为发生了变化。但不是我想象的方式。现在,当我第一次以新用户身份登录时,它会跳过整个“授权概念证明”页面。
发生了什么事?用户在什么条件下需要授权应用程序?他们必须授权的方案是否允许我提供“更多详细信息”页面?
答案 0 :(得分:2)
Trident webview中的Javascript代码在ADAL中被视为非https网址。该问题已经提交,Adal.NET正在审核提交。 https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/issues/544