匿名ユーザーが使用できるASP.NETコアMVCアプリケーションがあります。クライアント資格情報フローを使用してトークンを永続化するためのベストプラクティス
new Client
{
ClientId = "my-mvc-client-app",
AllowedGrantTypes = GrantTypes.ClientCredentials,
RequireConsent = false,
ClientSecrets = new List<Secret> { new Secret("this-is-my-secret".Sha256()) },
AllowedScopes = new List<string>
{
StandardScopes.OpenId.Name,
StandardScopes.Profile.Name,
StandardScopes.OfflineAccess.Name,
"my-protected-api"
},
RedirectUris = new List<string>
{
"http://localhost:5009/signin-oidc",
}
}
:このアプリは、私はMVCアプリケーション(クライアント)を記述するIdentity Serverのクライアントを作成し、それをこのようなAPIのスコープへのアクセス権を与えているアイデンティティ・サーバー4で保護されているASP.NETのWeb APIを呼び出しています私のMVCアプリで
、私はこのような保護されたAPIに要求を行うときに、私が使用できるトークンを取得するためにTokenClient
を使用しています:
var disco = await DiscoveryClient.GetAsync("http://localhost:5010");
var tokenClient = new TokenClient(disco.TokenEndpoint, clientId, clientSecret);
var tokenResponse = await tokenClient.RequestClientCredentialsAsync("hrmts-test-candidate-api-scope");
これは正常に動作しますが、私は、Identity Serverから新しいトークンを要求していますおそらく良い考えではないでしょう。
トークンを処理するベストプラクティスは何ですか?どのようにクライアント(MVCアプリケーション)にそれらを保持することができますし、リフレッシュトークンを処理して、クライアントが必要なときに新しいトークンを取得できるようにするにはどうすればよいですか?
私はアプローチが好きですが、これがシングルトンとしてスコープされている場合は、この実装スレッドは安全で安全です。 – LugTread