私のWebApiでMS Graphを使用するためのアクセストークンを取得しようとしています。しかし、このエラーが発生し続ける、
[TaskCanceledException:タスクがキャンセルされました。] System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)+167。 。
[IOException:IDX20804:ドキュメントを取得できません: '[PIIは非表示]'。] Microsoft.IdentityModel.Protocols.d__8.MoveNext()+662 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)+99。 。 [InvalidOperationException:IDX20803:構成を取得できません: '[PIIは非表示]'。] Microsoft.IdentityModel.Protocols.d__24.MoveNext()+1586 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)+99
オンラインで見つけた修正をすべて試しました。
私はこれをauth部分の参照として使用しています repo 。
どうすれば修正できますか?
私は同じ問題を抱えていました、それはそれがDockerNATを通過しなければならないためです。 (誰もがこのIPアドレスを取得するわけではない場合があります)
これは私が私の問題を解決した方法です:
あなたはこのようなものを得るでしょう。
Windows IP構成
イーサネットアダプターvEthernet(DockerNAT):
接続固有のDNSサフィックス。 :
IPv4アドレス。 。 。 。 。 。 。 。 。 。 。 :10.0.75.1
サブネットマスク 。 。 。 。 。 。 。 。 。 。 。 :255.255.255.240
デフォルトゲートウェイ 。 。 。 。 。 。 。 。 。 :
基本的にそのIPアドレスをdocker-compose.ymlファイルにコピーします
サービス:
webmvc:
build:
context: .\src\Web\WebMvc
dockerfile: Dockerfile
environment:
- IdentityUrl=http://10.0.75.1:5000/ #Change IP and Port
container_name: test
ports:
- "5200:80"
networks:
- frontend
depends_on:
- tokenserver #your identityserver4 service
その他の確認事項は次のとおりです。
ConfigureServices(WebMvcプロジェクト)の下のStartup.csに以下があり、ymlファイルに正しくつづられていることを確認してください。
var identityUrl = Configuration.GetValue<string>("IdentityUrl");
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(options => {
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.Authority = identityUrl.ToString();
options.SignedOutRedirectUri = "http://localhost:5200/"; //Change to your mvc address
options.ClientId ="mvc";
options.ClientSecret = "secret";
options.ResponseType = "code id_token";
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.RequireHttpsMetadata = false;
options.Scope.Add("openid");
options.Scope.Add("profile");
options.Scope.Add("offline_access");
options.TokenValidationParameters = new TokenValidationParameters()
{
NameClaimType = "name",
RoleClaimType = "role"
};
});
a。コントロールパネルを開く
b。システムとセキュリティ
c。 Windows Defenderファイアウォール
d。高度な設定
e。受信設定=>新しいルール...
f。ルールタイプ=>ポート==> [次へ]をクリックします
g。プロトコルの下でTCP=を選択します
h。特定のローカルポート=> 5000を入力
私。 [次へ]をクリックします=> [接続を許可する]を選択します
j。次へをクリック
k。ルールはいつ適用されますか?
l。 [次へ] => [Dockerポートを入力] => [完了]をクリックします
新しいBlazorアプリを作成するときに同様のエラーが発生しました->個別のユーザーアカウントでBlazorサーバーアプリ->クラウド(Azure AD B2C)の既存のユーザーストアに接続します。
IOException:IDX20807:からドキュメントを取得できません: '[PIIは非表示です。詳細については、 https://aka.ms/IdentityModel/PII。] 'を参照してください。 HttpResponseMessage: '[PIIは非表示です。詳細については、 https://aka.ms/IdentityModel/PII。] 'を参照してください。HttpResponseMessage.Content:' [PII is hidden。詳細については、 https://aka.ms/IdentityModel/PII。] 'を参照してください。 Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(string address、CancellationToken cancel)
InvalidOperationException:IDX20803:から構成を取得できません: '[PIIは非表示です。詳細については、 https://aka.ms/IdentityModel/PII。] 'を参照してください。 Microsoft.IdentityModel.Protocols.ConfigurationManager.GetConfigurationAsync(CancellationToken cancel)
ドメインがAzure AD B2C
の完全なApp ID URI
ではなくappsettings.json
ドメインに設定されていることを確認してください。たとえば、<tenant-name>.onmicrosoft.com
の代わりに<tenant-name>.onmicrosoft.com/api
を使用します。また、AzureAdB2C-> appsettings.json
のインスタンスも確認してください。 https://login.microsoftonline.com/tfp
の値をデフォルトとしてここに設定しましたが、https://<tenant-name>.b2clogin.com/tfp/
に変更すると機能しなくなり、すべてが機能し始めました。