ServiceStack に組み込まれている認証サポートについて説明している認証と承認の wikiを読むことをお勧めします。
バックエンド リポジトリ オプション
認証された UserData を長期的に永続化できるすべての潜在的なバックエンド リポジトリについて説明します。
短期セッション / キャッシング プロバイダー
認証されたクライアント セッションの高速で短期間のデータ アクセスに使用されるすべての異なるキャッシュ オプション:
デフォルトでは、指定されていない場合はMemoryCacheClientが使用されます。
サンプルプロジェクト
http://bootstrapapi.apphb.comにデプロイされているSocialBootstrap API プロジェクトのソース コードを見ることができます。これは、Web アプリケーションで有効になっている ServiceStack のサポートされているすべての認証オプションを紹介するサンプル デモです。
AppHost.ConfigureAuth()のコードとドキュメントを再投稿します。これは、構成方法の説明が既に適切に行われているためです。
AppSettings は、Web.Configに保存されている追加情報にアクセスするために、ほとんどの認証プロバイダーで使用されます。
var appSettings = new AppSettings();
AuthFeature プラグインを使用して、この Web アプリで有効にするすべての認証方法を登録します。
Plugins.Add(new AuthFeature(
() => new CustomUserSession(), //Use your own typed Custom UserSession type
new IAuthProvider[] {
new CredentialsAuthProvider(), //HTML Form post of UserName/Password credentials
new TwitterAuthProvider(appSettings), //Sign-in with Twitter
new FacebookAuthProvider(appSettings), //Sign-in with Facebook
new DigestAuthProvider(appSettings), //Sign-in with Digest Auth
new BasicAuthProvider(), //Sign-in with Basic Auth
new GoogleOpenIdOAuthProvider(appSettings), //Sign-in with Google OpenId
new YahooOpenIdOAuthProvider(appSettings), //Sign-in with Yahoo OpenId
new OpenIdOAuthProvider(appSettings), //Sign-in with Custom OpenId
}));
ServiceStackを使用すると、UserAuth データをセッションに永続化するために使用する独自の型付きCustomUserSessionを指定できます。
新しいユーザーの登録サービスを有効にして、提供された資格情報で登録およびログインできるようにする場合は、次のようにします。
Plugins.Add(new RegistrationFeature());
オプションで、独自のカスタム実装でデフォルトの登録検証をオーバーライドできます。
//container.RegisterAs<CustomRegistrationValidator, IValidator<Registration>>();
OrmLite RDBMS バックエンド リポジトリを使用している場合は、DB ファクトリを登録する必要があります。この場合は、UserAuth SQL Server DB にアクセスするように構成されています。
var connStr = appSettings.Get("SQLSERVER_CONNECTION_STRING", //AppHarbor or Local connection string
ConfigUtils.GetConnectionString("UserAuth"));
container.Register<IDbConnectionFactory>(
new OrmLiteConnectionFactory(connStr, //ConnectionString in Web.Config
SqlServerOrmLiteDialectProvider.Instance) {
ConnectionFilter = x => new ProfiledDbConnection(x, Profiler.Current)
});
上記の ConnectionFilter はオプションですが、ServiceStack の組み込みの Mini Profiler を使用して DB クエリをプロファイリングできます。
上記で RDBMS 接続を登録したので、それをフックしてIUserAuthRepository
、認証機能用にします。
//Use OrmLite DB Connection to persist the UserAuth and AuthProvider info
container.Register<IUserAuthRepository>(c =>
new OrmLiteAuthRepository(c.Resolve<IDbConnectionFactory>()));
OrmLiteAuthRepositoryを使用すると、AuthFeatureに必要なバックエンド User Auth テーブルを自動的に作成できます。
//Drop and re-create all Auth and registration tables
var authRepo = (OrmLiteAuthRepository)container.Resolve<IUserAuthRepository>();
if (appSettings.Get("RecreateAuthTables", false))
authRepo.DropAndReCreateTables();
else
authRepo.CreateMissingTables(); //Create only the missing tables