web-dev-qa-db-ja.com

IDX10803:構成を取得するために作成できません

私の構成には、Identity Server(Idp)、Windows認証ホスト、エンドユーザークライアントサイトの3つのサイトがあります。クライアントサイトで、[Authorize]で装飾されたコントローラーをリクエストすると、Identity Serverが起動します。

ポート44305のWindowsホストは明らかに例外をスローしており、IDサーバーはステータス500を受信して​​います。WindowsホストサイトのURLに問題なくアクセスできます。 XMLドキュメントを取得します

この認証プロセスを停止している例外またはエラーをデバッグして見つけるにはどうすればよいですか?私は次のように最も内側の3つの部分の例外を受け取ります

InvalidOperationException: IDX10803: Unable to create to obtain configuration from: 'https://localhost:44305/'.

Microsoft.IdentityModel.Protocols.ConfigurationManager`1.<GetConfigurationAsync>d__3.MoveNext() in ConfigurationManager.cs

WindowsホストOWINスタートアップはUseWindowsAuthenticationServiceを使用しています

Identity Server OWINはAuthenticationOptions = WsFederationAuthenticationOptionsを使用しています

var wsFederationOptions = new WsFederationAuthenticationOptions
            {
                AuthenticationType = "windows",
                Caption = "Windows",
                SignInAsAuthenticationType = signInAsType,
                MetadataAddress = "https://localhost:44305/",
                Wtrealm = "urn:idsrv3"
            };
            app.UseWsFederationAuthentication(wsFederationOptions);
        }

ここにリクエストとレスポンスがあります

Request URL:https://localhost:44315/
Request Method:GET
Status Code:302 Found
Response:Location:https://localhost:16433/connect/authorize?client_id=hms2015&redirect_uri=...

Request: https://localhost:16433/connect/authorize?client_id=hms2015&redirect_uri=...
Request Method:GET
Status Code:302 Found
Location:https://localhost:16433/login?signin=fde7508a6634698847c3076c9028604b

Request URL:https://localhost:16433/login?signin=fde7508a6634698847c3076c9028604b
Request Method:GET
Status Code:500 Internal Server Error

目に見えるSSLの問題はありません。ブラウザを使用すると、警告なしでさまざまなサイトのすべてのページを開くことができます。 localhost IIS Express certをTrusted Root Certに追加します。

21
MADCookie

チームの別の開発者が問題の発見を支援しました。ポート44305で実行されているWindows認証ホストでは、匿名が無効になっています。これを有効にすると、リダイレクトされたプロセスが再び機能し始めました。

残念ながら、実際にはエラーを検出できませんでしたが、試行錯誤(ハッキング)により修正されました。私の主な質問は、HTTP 500の詳細を実際に確認できるように、OWINアプリをどのようにデバッグするかということでした。 IdentityServer3ログがWin Authホストからの応答を記録できたらいいのにと思います。また、なぜそれは401応答コードではないのですか?

0
MADCookie

私は同じ問題を抱えていました-SSL証明書は信頼できないようです。これを解決するために、「localhost」IIS Express CertをPersonal CertStoreから信頼されたルート証明機関に移動しました。問題はなくなりました。

Cert

20
Robert Muehsig

この問題が発生したため、 Robert Muehsig answer に従って証明書を信頼する必要がありました。

しかし、これだけでは十分ではありませんでした。 Bearer Token Authenticationを使用しています。さらに掘り下げてみると、DelayLoadMetadataフラグをtrueに設定する必要があることがわかりました。

したがって、私のWeb APIスタートアップでは:

app.UseIdentityServerBearerTokenAuthentication(
    new IdentityServerBearerTokenAuthenticationOptions
{
    DelayLoadMetadata=true
});

これと証明書信頼の変更後、機能し始めました。私はこれが元の問題と同じ設定ではないことを知っていますが、検索中にこの投稿に出くわし続けたので、それを偶然見つけた人のためにここに置くと思いました...

15
SteveL

私の記憶から、このエラーは主に証明書の信頼/ネットワークアクセスの問題が原因でスローされます。ローカルホストですべてのコンポーネントを実行しているため、ネットワークの問題ではありません。 VS Dev環境から実行していると思います。

いくつかのこと:

  • IISサーバーでコンポーネントをホストしてみてください
  • Localhostを使用する代わりに、ホストの自己署名証明書を作成し、ホスト名をサブジェクト名として割り当ててみてください(署名用のidsrv3test証明書とホストSSLの自己署名証明書)

また、ここで説明するように、証明書を読み取るためのアクセス許可を割り当てます https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/Certificates

それでもこの問題が発生する場合は、Wireshark経由でトラフィックを監視してみてください(この場合、Fiddlerは動作しません)

4
Karthik

テストのために、パイプラインの最初のミドルウェアとして以下のブロックを追加しました。これにより、例外が発生するたびに実際に例外がログに記録されます。これにより、私の500は実際には401であることがわかりました。

        appBuilder.Use(async (context, next) =>
        {
            try
            {
                await next();
            }
            catch(Exception ex)
            {
                Log.Error(ex, "OWIN error.");
            }

        });
2
thekip

私のチームは次の問題に直面しました。[エラー] Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler:メッセージの処理中に例外が発生しました。 System.InvalidOperationException:IDX10803: ' https:// [your identity server domain] /。well-known/openid-configuration'から構成を取得できません。 ---> System.IO.IOException:IDX10804: ' https:// [your identity server domain] .well-known/openid-configuration'からドキュメントを取得できません。 ---> System.Net.Http.HttpRequestException:接続されたパーティが一定期間後に適切に応答しなかったため、または接続されたホストが応答しなかったために確立された接続が失敗したため、接続試行が失敗しました---> System.Net.Sockets .SocketException:接続されたホストが一定期間後に適切に応答しなかったため、または接続されたホストがSystem.Net.Http.ConnectHelper.ConnectAsync(String Host、Int32 port、CancellationToken cancelToken)---内部例外スタックトレースの終了---

理由を見つけるのに多くの時間を費やしました。最後に、非常に単純な間違いです。UAT環境では、「C:\ Windows\System32\drivers\etc」のホストファイルのセットアップが正しくありませんでした。 hostsファイルで定義されたドメインは、IISでバインドされているドメインと一致しません。

0
ChinaHelloWorld

プロキシ認証も原因である可能性があります。 login.microsoftonline.com:XXX呼び出しのフィドラートラフィックを確認し、407エラーコードが返されるかどうかを確認してください。

407エラーコードが表示される場合、web.configでプロキシ認証を有効にする必要があります

0