createAuthExternalProviderRuntimeConformanceEngine function
Engine
createAuthExternalProviderRuntimeConformanceEngine({
- AuthSessionStrategy sessionStrategy = AuthSessionStrategy.session,
Creates an auth engine backed only by deterministic external providers.
Provider token and key requests are handled by an in-process scripted HTTP client. The fixture never reads live secrets or opens a provider network connection.
Implementation
Engine createAuthExternalProviderRuntimeConformanceEngine({
AuthSessionStrategy sessionStrategy = AuthSessionStrategy.session,
}) {
final providerClient = _createProviderClient();
final manager = AuthManager(
AuthOptions<EngineContext>(
store: InMemoryAuthStore(),
storeMode: AuthStoreMode.ephemeral,
providers: <AuthProvider>[
_createOidcProvider(),
_RuntimeCallbackProvider(),
],
plugins: <AuthServerPlugin<EngineContext>>[
UsernamePlugin<EngineContext>(),
],
passwordHasher: const _ConformancePasswordHasher(),
sessionStrategy: sessionStrategy,
jwtOptions: const JwtSessionOptions(
secret: 'runtime-jwt-secret-with-at-least-32-bytes',
cookieName: _jwtCookieName,
secure: false,
),
httpClient: providerClient,
cookiePolicy: AuthCookiePolicy.development,
),
);
final sessionKey = base64.encode(
List<int>.generate(32, (index) => 127 - index),
);
final engine = Engine(
config: EngineConfig(
security: const EngineSecurityFeatures(csrfProtection: false),
),
providers: <ServiceProvider>[
...Engine.defaultProviders,
RoutedSessionsProvider(
SessionConfig.cookie(
appKey: 'base64:$sessionKey',
cookieName: authExternalProviderRuntimeCookieName,
options: SessionOptions(
secure: false,
httpOnly: true,
sameSite: SameSite.lax,
),
),
),
],
);
engine.addGlobalMiddleware(sessionMiddleware());
engine.addGlobalMiddleware(SessionAuth.sessionAuthMiddleware());
AuthRoutes(manager).register(engine.defaultRouter);
return engine;
}