2

私は IdentityServer を初めて使用し、これを設定するのに少し問題があります。

ここでは説明しませんが、ASP.NET Identity または EntityFramework は使用できません。認証が必要なユーザー用のカスタム データベースがあるため、サンプルを取得し、カスタム永続ストアの InMemoryUsers を切り替えようとしました。

これが私のConfigureServicesメソッドです:

public void ConfigureServices(IServiceCollection services)
{
    services.AddIdentityServer(options =>
        {
            options.AuthenticationOptions = new IdentityServer4.Configuration.AuthenticationOptions
            {
            };
        })
    .AddInMemoryClients(Clients.Get())
    .AddInMemoryScopes(Scopes.Get())
    .SetTemporarySigningCredential();

    services.AddMvc();

    services.AddTransient<ISignInService, SignInService>();
    services.AddTransient<IUserRepository, UserRepository>();
    services.AddTransient<IUserService, UserService>();

    services.AddTransient<IResourceOwnerPasswordValidator, ResourceOwnerPasswordValidator>();
    services.AddTransient<IProfileService, ProfileService>();
}

私はまだいくつかのことをテストしているので、この方法が不完全であることは知っていますが、アプリケーションを実行すると、次のエラーが発生します。

System.InvalidOperationException 許可のストレージ メカニズムが指定されていません。'AddInMemoryStores' 拡張メソッドを使用して、開発バージョンを登録します。

明らかに、本番環境の実装にメモリストアを使用したくありませんが、これを修正するために何をする必要があるかわかりません。

4

1 に答える 1

3

AddInMemoryStores には最適な名前がありません。実際には、発行されたマテリアル/トークンに関連するすべての一時データのストアが追加されます。

多くの場合、このデータをディスクに永続化する必要がなく、長期間有効なトークンを使用しないため、本番環境で使用することがあります。

ここで拡張メソッドが何をするかを見IPersistedGrantStoreて、より良いアイデアを得るためにコントラクトがどのように見えるかを見てください。

于 2016-10-04T05:08:40.403 に答える