2017-03-01 7 views
1

mongodbで新しくIdentityServer4.MongoDBを使用してログイントークンを作成しようとしています。 私はすでに "IdentityServer4": "1.0.0-rc4-update1"を使って簡単なソリューションを作っていましたが、データベースはSql Serverでした。IdentityServer4.MongoDBを使用してトークンを取得

今私はmongodbデータベースを使って同じことをしたいと思います。私はIdentityServer4.MongoDBサンプルのサンプルをたくさん検索しますが、解決策が見つからずにIdentityServer4.MongoDBを探しています。私が変えなければならない1つのクラスだけ完璧に働くすべてのもの。そして私はmongodbのためにその変更を行うことができませんでした。それでも私はそれを探しています。

以下は、私がSQL Serverで作成したコードで、IdentityServer4.MongoDBを使用して同じタスクを実行するコードです。

ResourceOwnerPasswordValidator.cs:IdentityServer4.MongoDBクラス "InMemoryUser" で

public class ResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator 
{ 
    public Task ValidateAsync(ResourceOwnerPasswordValidationContext context) 
    { 
     //dapper.net for getting user from DB 
     using (IDbConnection db = new SqlConnection("Data Source=.;Initial Catalog=TestDB;Integrated Security=True")) 
     { 
      var user = db.Query<User>("SELECT * FROM Registration WHERE [email protected] AND [email protected]", 
       new { Username = context.UserName, Password = context.Password }).SingleOrDefault(); 

      if (user == null) 
      { 
       context.Result = new GrantValidationResult(TokenErrors.InvalidRequest, "Username or password is incorrect"); 
       return Task.FromResult(0); 
      } 

      #region 
      var users = new List<InMemoryUser> 
      { 
       new InMemoryUser 
       { 
        Subject = "818727", 
        Username = user.Username, 
        Password = user.Password, 
        Claims = new Claim[] 
        { 
         new Claim(JwtClaimTypes.Name, user.FirstName), 
         new Claim(JwtClaimTypes.GivenName, user.FirstName), 
         new Claim(JwtClaimTypes.FamilyName, user.LastName), 
         new Claim(JwtClaimTypes.Email, user.Email) 
        } 
       } 
      }; 
      #endregion 

      context.Result = new GrantValidationResult(user.Id.ToString(), "Password", users[0].Claims); 

      return Task.FromResult(0); 
     } 
    } 
} 

が機能していません。 どうすれば解決できますか? mongodbに "InMemoryUser"の代わりに何を使用できますか?

ありがとうございます。

答えて

0

とにかくInMemoryUserを作成しようとしていますか? GrantValidationResultにクレームの一覧を返すだけなので、クレームを作成して送信してください。 InMemoryUserは何も追加していません。

関連する問題