0

ユーザーが自分の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にアクセスしないようにしますか?そのような実装のベストプラクティスは何ですか?

答えて

0

アイデンティティ・サーバー3の場合、パスワード・リセットはIDサーバーの責任ではありません。パスワードをリセットするには、基本的なメンバーシッププロバイダシステム(asp.net identityまたはmembershipreboot)に依存する必要があります。 BY THE WAYでは、IDサーバーホストでリセット画面をホストできます。

関連する問題