ユーザーが自分のAPIにアクセスできるようにIdentity Server 4を使用して認証と承認を実装しています。それはangular2クライアントアプリケーションを認証するための暗黙的なフローでOIDCを使用しています。Identity Server:アクセストークンを使用してパスワードリセットリンクを送信する
ClientName = "angular2client",
ClientId = "angular2client",
AccessTokenType = AccessTokenType.Jwt,
AllowedGrantTypes = GrantTypes.Implicit,
AllowAccessTokensViaBrowser = true,
RedirectUris = new List<string>
{
"http://localhost:5000" //we have to provide https for all the urls
},
PostLogoutRedirectUris = new List<string>
{
"http://localhost:5000/Unauthorized"
},
AllowedCorsOrigins = new List<string>
{
"http://localhost:5000",
},
AllowedScopes = new List<string>
{
"openid",
"resourceAPIs"
}
私は彼らの電子メールにリンクし、それらを送信することにより、ユーザのためのパスワードリセットオプションを提供する予定です。伝統的な実装では、カスタムハッシュ、ユーザーID、有効期限付きのDBにエントリを追加し、そのリンクをユーザーに送信します。彼がリセットパスワードのリンクを要求するとき、私はそれを私のdbに対して検証し、そのエントリがまだ有効であるかどうかをチェックする。
現在、私のソリューションは、Identity Server、Resource Server(API)、およびAngle 2アプリケーションという2つのサーバーで構成されています。ユーザーはアプリケーションにアクセスするためにトークンを取得し、APIにアクセスするための認証が必要です。 tokenが有効でない場合、APIを呼び出すことはできません。私がやりたい場合は
app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
Authority = "http://localhost:44311",
ScopeName = "resourceAPIs",
RequireHttpsMetadata = false
});
ことのIdentity Server 4を使用して、彼はパスワード変更APIへのアクセスを可能にするトークンを持つ電子メールのリンクを送信: これは、リソースサーバがトークンを検証している方法です。クライアントにどのような変更を加える必要がありますか?
この1つの「Reset Password API」にアクセスできる別のクライアントを追加して、同じトークンを使用してリソースAPIにアクセスしないようにしますか?そのような実装のベストプラクティスは何ですか?