Skip to content

Commit 17bc8a4

Browse files
authored
fix(auth): Removing tenant-aware session cookie APIs (#237)
1 parent d3ff568 commit 17bc8a4

File tree

12 files changed

+366
-351
lines changed

12 files changed

+366
-351
lines changed

FirebaseAdmin/FirebaseAdmin.Tests/Auth/AuthBuilder.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,16 @@ private void PopulateArgs(AbstractFirebaseAuth.Args args, TestOptions options)
7777

7878
if (options.SessionCookieVerifier)
7979
{
80-
args.SessionCookieVerifier = new Lazy<FirebaseTokenVerifier>(
81-
this.CreateSessionCookieVerifier());
80+
if (args is FirebaseAuth.Args)
81+
{
82+
(args as FirebaseAuth.Args).SessionCookieVerifier =
83+
new Lazy<FirebaseTokenVerifier>(this.CreateSessionCookieVerifier());
84+
}
85+
else
86+
{
87+
throw new InvalidOperationException(
88+
$"Session cookie verification not supported on {args.GetType()}");
89+
}
8290
}
8391
}
8492

@@ -116,7 +124,7 @@ private FirebaseTokenVerifier CreateIdTokenVerifier()
116124
private FirebaseTokenVerifier CreateSessionCookieVerifier()
117125
{
118126
return FirebaseTokenVerifier.CreateSessionCookieVerifier(
119-
this.ProjectId, this.KeySource, this.Clock, this.TenantId);
127+
this.ProjectId, this.KeySource, this.Clock);
120128
}
121129
}
122130
}

FirebaseAdmin/FirebaseAdmin.Tests/Auth/Jwt/SessionCookieVerificationTest.cs

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class SessionCookieVerificationTest
2828
public static readonly IEnumerable<object[]> TestConfigs = new List<object[]>()
2929
{
3030
new object[] { TestConfig.ForFirebaseAuth() },
31-
new object[] { TestConfig.ForTenantAwareFirebaseAuth("test-tenant") },
31+
// TODO(hkj): Add tenant-aware tests when the support is available.
3232
};
3333

3434
private const long ClockSkewSeconds = 5 * 60;
@@ -234,7 +234,7 @@ public async Task InvalidIssuer(TestConfig config)
234234
[MemberData(nameof(TestConfigs))]
235235
public async Task IdToken(TestConfig config)
236236
{
237-
var tokenBuilder = JwtTestUtils.IdTokenBuilder(config.TenantId);
237+
var tokenBuilder = JwtTestUtils.IdTokenBuilder();
238238
var idToken = await tokenBuilder.CreateTokenAsync();
239239
var auth = config.CreateAuth();
240240

@@ -330,7 +330,7 @@ public async Task RevokedToken(TestConfig config)
330330
var expectedMessage = "Firebase session cookie has been revoked.";
331331
this.CheckException(exception, expectedMessage, AuthErrorCode.RevokedSessionCookie);
332332
Assert.Equal(1, handler.Calls);
333-
JwtTestUtils.AssertRevocationCheckRequest(config.TenantId, handler.Requests[0].Url);
333+
JwtTestUtils.AssertRevocationCheckRequest(null, handler.Requests[0].Url);
334334
}
335335

336336
[Theory]
@@ -354,7 +354,7 @@ public async Task ValidUnrevokedToken(TestConfig config)
354354

355355
Assert.Equal("testuser", decoded.Uid);
356356
Assert.Equal(1, handler.Calls);
357-
JwtTestUtils.AssertRevocationCheckRequest(config.TenantId, handler.Requests[0].Url);
357+
JwtTestUtils.AssertRevocationCheckRequest(null, handler.Requests[0].Url);
358358
}
359359

360360
[Theory]
@@ -380,7 +380,7 @@ public async Task CheckRevokedError(TestConfig config)
380380
Assert.Null(exception.InnerException);
381381
Assert.NotNull(exception.HttpResponse);
382382
Assert.Equal(1, handler.Calls);
383-
JwtTestUtils.AssertRevocationCheckRequest(config.TenantId, handler.Requests[0].Url);
383+
JwtTestUtils.AssertRevocationCheckRequest(null, handler.Requests[0].Url);
384384
}
385385

386386
[Theory]
@@ -423,32 +423,25 @@ public class TestConfig
423423
private readonly AuthBuilder authBuilder;
424424
private readonly MockTokenBuilder tokenBuilder;
425425

426-
private TestConfig(string tenantId = null)
426+
private TestConfig()
427427
{
428-
this.authBuilder = JwtTestUtils.AuthBuilderForTokenVerification(tenantId);
429-
this.tokenBuilder = JwtTestUtils.SessionCookieBuilder(tenantId);
428+
this.authBuilder = JwtTestUtils.AuthBuilderForTokenVerification();
429+
this.tokenBuilder = JwtTestUtils.SessionCookieBuilder();
430430
}
431431

432-
public string TenantId => this.authBuilder.TenantId;
433-
434432
public static TestConfig ForFirebaseAuth()
435433
{
436434
return new TestConfig();
437435
}
438436

439-
public static TestConfig ForTenantAwareFirebaseAuth(string tenantId)
440-
{
441-
return new TestConfig(tenantId);
442-
}
443-
444-
public AbstractFirebaseAuth CreateAuth(HttpMessageHandler handler = null)
437+
public FirebaseAuth CreateAuth(HttpMessageHandler handler = null)
445438
{
446439
var options = new TestOptions
447440
{
448441
UserManagerRequestHandler = handler,
449442
SessionCookieVerifier = true,
450443
};
451-
return this.authBuilder.Build(options);
444+
return (FirebaseAuth)this.authBuilder.Build(options);
452445
}
453446

454447
public async Task<string> CreateSessionCookieAsync(

FirebaseAdmin/FirebaseAdmin.Tests/Auth/Multitenancy/TenantAwareFirebaseAuthTest.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ public void UseAfterDelete()
4848

4949
Assert.Throws<InvalidOperationException>(() => auth.TokenFactory);
5050
Assert.Throws<InvalidOperationException>(() => auth.IdTokenVerifier);
51-
Assert.Throws<InvalidOperationException>(() => auth.SessionCookieVerifier);
5251
Assert.Throws<InvalidOperationException>(() => auth.UserManager);
5352
Assert.Throws<InvalidOperationException>(() => auth.ProviderConfigManager);
5453
}
@@ -63,7 +62,6 @@ public void TenantId()
6362
Assert.Equal(MockTenantId, auth.TenantId);
6463
Assert.Equal(MockTenantId, auth.TokenFactory.TenantId);
6564
Assert.Equal(MockTenantId, auth.IdTokenVerifier.TenantId);
66-
Assert.Equal(MockTenantId, auth.SessionCookieVerifier.TenantId);
6765
Assert.Equal(MockTenantId, auth.UserManager.TenantId);
6866
Assert.Equal(MockTenantId, auth.ProviderConfigManager.TenantId);
6967
}

FirebaseAdmin/FirebaseAdmin.Tests/Auth/UserRecordTest.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ public void AllProperties()
8585
CreatedAt = 100,
8686
LastLoginAt = 150,
8787
CustomClaims = @"{""admin"": true, ""level"": 10}",
88+
TenantId = "tenant1",
8889
Providers = new List<GetAccountInfoResponse.Provider>()
8990
{
9091
new GetAccountInfoResponse.Provider()
@@ -121,6 +122,7 @@ public void AllProperties()
121122
{ "level", 10L },
122123
};
123124
Assert.Equal(claims, user.CustomClaims);
125+
Assert.Equal("tenant1", user.TenantId);
124126

125127
Assert.Equal(2, user.ProviderData.Length);
126128
var provider = user.ProviderData[0];

0 commit comments

Comments
 (0)