Xamarin IOS Oidcclient需要HTTPS(APP Transport Security可能)



我正在尝试连接到没有SSL的IdentityServer(v4),但这会在我的Xamarin IOS应用程序上发生崩溃。

代码:

OidcClient _client;
AuthorizeState _state;
SafariServices.SFAuthenticationSession _session;
public ViewController(IntPtr handle) : base(handle)
{
    var options = new OidcClientOptions
    {
        Authority = "http://auth.xxxx.be",
        ClientId = "iosClient",
        Scope = "openid email xxx",
        RedirectUri = "xxxApp://callback",
        ResponseMode = OidcClientOptions.AuthorizeResponseMode.Redirect,
    };
    _client = new OidcClient(options);
}

执行代码时,我会收到以下错误:

Error loading discovery document: Error connecting to 
http://auth.xxxx.be/.well-known/openid-configuration: HTTPS required

我试图允许使用以下行的非HTTPS请求

    <plist version="1.0">
    <dict>
     ...
    <key>NSAppTransportSecurity</key>
    <dict>
      <key>NSAllowsArbitraryLoads</key>
    <false/>
  </dict>
</dict>
    </plist>

但这没有效果。可能是因为Oidcclient使用了自己的方法连接到此Web应用程序。

与SSL的分流,这不是问题,但是我想节省一些成本以在Azure上运行我的网站(= SSL支持的较高成本)。

我正在使用iOS11。

运行最新的Xamarin/Visual Studio

您可以使用浏览器访问您的配置吗? http://auth.xxxx.be/.well-known/openid-configuration

如果没有,也许您的服务器未正确设置。如果不是您的服务器,则应该有效:

 _options = new OidcClientOptions()
        {
            Authority = "your authority",
            ClientId = clientId,
            ClientSecret = "secret",
            Scope = "your scopes",
            RedirectUri = "redirectUrl",
            ResponseMode = OidcClientOptions.AuthorizeResponseMode.Redirect,
            Policy = new Policy()
            {
                Discovery = new DiscoveryPolicy() { RequireHttps = false }
            }
        };

要避免崩溃,请将其包裹在试用中并相应地计划。

相关内容

  • 没有找到相关文章

最新更新