数年前、私は.Net 4.6とASP Identityを使用してWebアプリケーションを実装し、バックエンドでの認可と認証にJWTを使用し、クライアントにAngularJSを使用しました。私が思い出したように、実装の基礎としてBitOfTech.netの一連の記事を使用しました。私は実装のためにVS2015コミュニティを使用しました。ASP IDでのASP.NetコアでのJWT認証
私は今、ASPアイデンティティコア、ネットコアおよびアンギュラ4私は角の作業の一部を持っており、JWTトークンを再実装しているを使用してVS2017コミュニティでこのアプリケーションを再実装しようとしています
とそれはwell-known/openid-configurationエンドポイントに正しいデータで応答し、トークンエンドポイントでAuthorizationControllerが呼び出され、ログインに失敗します。
多くの問題を抱えていますが、最大の問題はSQL Queryを使用してデータベースをアップグレードしていますが、falseを返す_userManager.CheckPasswordAsync()を呼び出すとAccountControllerが失敗します。私はPostmanを使ってテストを実行しています。同じaspnet Identity DBに対して実行されていた古いバージョンが動作するので、ユーザ名とパスワードは正しいです。
以前のプロジェクトでは、VerifyHashedPassword()をオーバーロードするPasswordHasherから派生したSQLPasswordHasherを実装する必要がありました。私はこれを行う必要があった理由を忘れていますが、データベースがASP.Netメンバシップを使用して最初に構築されたため、保存されたパスワードは古いアルゴリズムを使用して生成されたためです。
は、だから私は、これを再実装することを決めたと私は私がしなければならなかったすべてはに私のSQLPasswordHasherを注入し、起動時にした後VerifyHashedPassword()とHashPassword()を実装IPasswordHasherに基づいてクラスを作成するために必要なことがわかりましたUserManager.PasswordHasher = SQLPasswordHasherを割り当ててUserManagerを設定します。
しかし、それは私が立ち往生している場所です。私の古い実装では、自分のコードにUserManagerを作成した場所がありましたが、スタートアップが大きく変わってどこを見つけられないのでしょうか。 GoogleはIdentityConfig.csの変更を提案しましたが、これはもはや使用されていません。
私が自分のPasswordHasherをUserManagerに挿入する方法を誰かに説明してもらえれば、私は永遠に感謝しています。
これが適切かどうかわかりませんが、私はOpenIddictを使用しています。
これまで読んでいただきありがとうございます。
を閉じることができます。私はそれがあなたの問題を解決するのに良いと思う。 –
さらに詳しく述べると、私は混乱するかもしれないと思う。まあ、私は混乱していることを知っていますが、私は理由を知るかもしれないと思います。 UserManagerはPasswordHasherの実装を持っているので、私はそれを継承していくつかのメソッドをオーバーライドする必要があります。 IPasswordHasherインターフェイスは、独自のアルゴリズムを開発し、元のアルゴリズムを拡張しないことを望む人を対象としています。 私は正しいですか? –
はい、そうです。したがって、ASP.NET Core Identityをカスタマイズする場合、UserManagerから継承し、いくつかのメソッドをオーバーライドする新しいサービスを作成できます。 –