代码之家  ›  专栏  ›  技术社区  ›  SurenSaluka

连接到Azure AD时UWP中的OIDCClient“指定的协议未知”异常

  •  0
  • SurenSaluka  · 技术社区  · 2 年前

    UWP应用程序通过连接Azure广告 IdentityModel.OidcClient 生成一个错误,如下所示。

    异常消息=“指定的协议未知。(异常 来自HRESULT:0x800C000D)“注意堆栈跟踪中的重要信息!

    内部发生异常 public class WabBrowser : IBrowser 是的 InvokeAsyncCore(BrowserOptions options, bool silentMode) 作用

    代码:

    public class WabBrowser : IBrowser
        {
            private readonly bool _enableWindowsAuthentication;
    
            public WabBrowser(bool enableWindowsAuthentication = false)
            {
                _enableWindowsAuthentication = enableWindowsAuthentication;
            }
    
            private async Task<BrowserResult> InvokeAsyncCore(BrowserOptions options, bool silentMode)
            {
                var wabOptions = WebAuthenticationOptions.UseHttpPost;
    
                if (_enableWindowsAuthentication)
                {
                    wabOptions |= WebAuthenticationOptions.UseCorporateNetwork;
                }
                if (silentMode)
                {
                    wabOptions |= WebAuthenticationOptions.SilentMode;
                }
    
                WebAuthenticationResult wabResult;
    
                try
                {
                    if (string.Equals(options.EndUrl, WebAuthenticationBroker.GetCurrentApplicationCallbackUri().AbsoluteUri, StringComparison.Ordinal))
                    {
                        wabResult = await WebAuthenticationBroker.AuthenticateAsync(
                            wabOptions, new Uri(options.StartUrl));
                    }
                    else
                    {
                        if (string.IsNullOrWhiteSpace(options.EndUrl))
                        {
                            wabResult = await WebAuthenticationBroker.AuthenticateAsync(
                            wabOptions, new Uri(options.StartUrl), WebAuthenticationBroker.GetCurrentApplicationCallbackUri());
                        }
                        else
                        {
                            wabResult = await WebAuthenticationBroker.AuthenticateAsync(
                            wabOptions, new Uri(options.StartUrl), new Uri(options.EndUrl));
                        }
                    }
                }
                catch (Exception ex)
                {
                    Utility.WriteErrorsToLogViaMessenger("WabBrowser-InvokeAsyncCore", ex);
    
                    return new BrowserResult
                    {
                        ResultType = BrowserResultType.UnknownError,
                        Error = ex.ToString()
                    };
                }
    }
    

    此问题仅在连接到时发生 Azure AD 当连接到其他身份服务器时,此实现工作正常。 任何帮助都将不胜感激。

    1 回复  |  直到 2 年前
        1
  •  0
  •   SurenSaluka    2 年前

    答案很简单。 而不是 UseHttpPost 在里面 WebAuthenticationOptions ,您必须将其设置为 None 当你连接到Azure广告时。

    var wabOptions = WebAuthenticationOptions.None;
    
    推荐文章