2017-12-14 4 views
0

SSLなしでIdentityServer(V4)に接続しようとしていますが、これは自分のXamarin iOSアプリケーションでクラッシュします。Xamarin iOS OidcClientにはHTTPSが必要(アプリケーション転送セキュリティで可能)

コード:

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でWebサイトを実行するためにいくつかのコストを節約したいと思います。

私は、iOS 11.

+0

NSAllowsArbitraryLoadsをtrueに設定する必要があります。 –

+0

私はそれを真に設定しようとしましたが、違いはありませんでした。 – PJDW

答えて

1

と最新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 } 
      } 
     }; 

クラッシュを回避するには、try catchでラップし、それに応じて計画します。

関連する問題