2017-01-15 12 views
0

mongodbにPersistedGrantStoreを実装しようとしていますが、mongodbを使用してユーザーとクライアントを格納することに成功し、メモリグラントストアでの使用の代わりに許可を保存しようとしています 、私は私がここで行方不明何かわからない、私のmongodbデータベースにPersistedGrantStoreを実装する方法

public class PersistedGrantStore : IPersistedGrantStore 
{ 
    public async Task<IEnumerable<PersistedGrant>> GetAllAsync(string subjectId) 
    { 
     PersistedGrantService persistedGrantService = new PersistedGrantService(); 
     return await persistedGrantService.GetAllPersistedGrant(subjectId); 
    } 

    public async Task<PersistedGrant> GetAsync(string key) 
    { 
     PersistedGrantService persistedGrantService = new PersistedGrantService(); 
     return await persistedGrantService.GetPersistedGrantByKey(key); 
    } 

    public async Task RemoveAllAsync(string subjectId, string clientId) 
    { 
     PersistedGrantService persistedGrantService = new PersistedGrantService(); 
     await persistedGrantService.RemoveAllBySubjectIdAndClientId(subjectId, clientId); 
    } 

    public async Task RemoveAllAsync(string subjectId, string clientId, string type) 
    { 
     PersistedGrantService persistedGrantService = new PersistedGrantService(); 
     await persistedGrantService.RemoveAllBySubjectIdAndClientIdAndType(subjectId, clientId, type); 
    } 

    public async Task RemoveAsync(string key) 
    { 
     PersistedGrantService persistedGrantService = new PersistedGrantService(); 
     await persistedGrantService.RemoveAllByKey(key); 
    } 

    public async Task StoreAsync(PersistedGrant grant) 
    { 
     PersistedGrantService persistedGrantService = new PersistedGrantService(); 
     await persistedGrantService.InsertPersistedGrant(grant); 
    } 
} 

そして、私が呼ばれPersistedGrantStore関数のどれもしないものは何でもstartup.cs

public void ConfigureServices(IServiceCollection services) 
    { 
     var builder = services.AddIdentityServer() 
      .AddSigningCredential(cert) 
      .AddInMemoryIdentityResources(IdentityConfiguration.GetIdentityResources()) 
      .AddInMemoryApiResources(ApiResourceConfiguration.GetApiResources()); 

     builder.Services.AddTransient<IResourceOwnerPasswordValidator, ResourceOwnerPasswordValidator>(); 
     builder.Services.AddTransient<IProfileService, ProfileService>(); 
     builder.Services.AddTransient<IClientStore, ClientStore>(); 
     builder.Services.AddTransient<IPersistedGrantStore, PersistedGrantStore>(); 
    } 

それはそうでIPersistedGrantStore

から継承したクラスを作成しましたスティルlサーバにpingを実行してアクセストークンを取得できるので、メモリ内のストレージがまだ使用されていると仮定しています。

答えて

0

アプリケーションが、コード/ハイブリッドフロー、参照トークン、または同意のためのプロンプトを使用しているグラントタイプを格納する必要がある場合は、当てはまらないようです。 AllowOfflineAccess = trueをクライアントに追加すると、コレクションがDBに作成されているのがわかります https://github.com/IdentityServer/IdentityServer4/issues/699

関連する問題