@@ -899,10 +899,19 @@ func TestUserOIDC(t *testing.T) {
899
899
IgnoreEmailVerified bool
900
900
IgnoreUserInfo bool
901
901
}{
902
+ {
903
+ Name : "NoSub" ,
904
+ IDTokenClaims : jwt.MapClaims {
905
+ "email" : "kyle@kwc.io" ,
906
+ },
907
+ AllowSignups : true ,
908
+ StatusCode : http .StatusBadRequest ,
909
+ },
902
910
{
903
911
Name : "EmailOnly" ,
904
912
IDTokenClaims : jwt.MapClaims {
905
913
"email" : "kyle@kwc.io" ,
914
+ "sub" : uuid .NewString (),
906
915
},
907
916
AllowSignups : true ,
908
917
StatusCode : http .StatusOK ,
@@ -915,6 +924,7 @@ func TestUserOIDC(t *testing.T) {
915
924
IDTokenClaims : jwt.MapClaims {
916
925
"email" : "kyle@kwc.io" ,
917
926
"email_verified" : false ,
927
+ "sub" : uuid .NewString (),
918
928
},
919
929
AllowSignups : true ,
920
930
StatusCode : http .StatusForbidden ,
@@ -924,6 +934,7 @@ func TestUserOIDC(t *testing.T) {
924
934
IDTokenClaims : jwt.MapClaims {
925
935
"email" : 3.14159 ,
926
936
"email_verified" : false ,
937
+ "sub" : uuid .NewString (),
927
938
},
928
939
AllowSignups : true ,
929
940
StatusCode : http .StatusBadRequest ,
@@ -933,6 +944,7 @@ func TestUserOIDC(t *testing.T) {
933
944
IDTokenClaims : jwt.MapClaims {
934
945
"email" : "kyle@kwc.io" ,
935
946
"email_verified" : false ,
947
+ "sub" : uuid .NewString (),
936
948
},
937
949
AllowSignups : true ,
938
950
StatusCode : http .StatusOK ,
@@ -946,6 +958,7 @@ func TestUserOIDC(t *testing.T) {
946
958
IDTokenClaims : jwt.MapClaims {
947
959
"email" : "kyle@kwc.io" ,
948
960
"email_verified" : true ,
961
+ "sub" : uuid .NewString (),
949
962
},
950
963
AllowSignups : true ,
951
964
EmailDomain : []string {
@@ -958,6 +971,7 @@ func TestUserOIDC(t *testing.T) {
958
971
IDTokenClaims : jwt.MapClaims {
959
972
"email" : "cian@coder.com" ,
960
973
"email_verified" : true ,
974
+ "sub" : uuid .NewString (),
961
975
},
962
976
AllowSignups : true ,
963
977
EmailDomain : []string {
@@ -970,6 +984,7 @@ func TestUserOIDC(t *testing.T) {
970
984
IDTokenClaims : jwt.MapClaims {
971
985
"email" : "kyle@kwc.io" ,
972
986
"email_verified" : true ,
987
+ "sub" : uuid .NewString (),
973
988
},
974
989
AllowSignups : true ,
975
990
EmailDomain : []string {
@@ -982,6 +997,7 @@ func TestUserOIDC(t *testing.T) {
982
997
IDTokenClaims : jwt.MapClaims {
983
998
"email" : "kyle@KWC.io" ,
984
999
"email_verified" : true ,
1000
+ "sub" : uuid .NewString (),
985
1001
},
986
1002
AllowSignups : true ,
987
1003
AssertUser : func (t testing.TB , u codersdk.User ) {
@@ -997,6 +1013,7 @@ func TestUserOIDC(t *testing.T) {
997
1013
IDTokenClaims : jwt.MapClaims {
998
1014
"email" : "colin@gmail.com" ,
999
1015
"email_verified" : true ,
1016
+ "sub" : uuid .NewString (),
1000
1017
},
1001
1018
AllowSignups : true ,
1002
1019
EmailDomain : []string {
@@ -1015,6 +1032,7 @@ func TestUserOIDC(t *testing.T) {
1015
1032
IDTokenClaims : jwt.MapClaims {
1016
1033
"email" : "kyle@kwc.io" ,
1017
1034
"email_verified" : true ,
1035
+ "sub" : uuid .NewString (),
1018
1036
},
1019
1037
StatusCode : http .StatusForbidden ,
1020
1038
},
@@ -1023,6 +1041,7 @@ func TestUserOIDC(t *testing.T) {
1023
1041
IDTokenClaims : jwt.MapClaims {
1024
1042
"email" : "kyle@kwc.io" ,
1025
1043
"email_verified" : true ,
1044
+ "sub" : uuid .NewString (),
1026
1045
},
1027
1046
AssertUser : func (t testing.TB , u codersdk.User ) {
1028
1047
assert .Equal (t , "kyle" , u .Username )
@@ -1036,6 +1055,7 @@ func TestUserOIDC(t *testing.T) {
1036
1055
"email" : "kyle@kwc.io" ,
1037
1056
"email_verified" : true ,
1038
1057
"preferred_username" : "hotdog" ,
1058
+ "sub" : uuid .NewString (),
1039
1059
},
1040
1060
AssertUser : func (t testing.TB , u codersdk.User ) {
1041
1061
assert .Equal (t , "hotdog" , u .Username )
@@ -1049,6 +1069,7 @@ func TestUserOIDC(t *testing.T) {
1049
1069
"email" : "kyle@kwc.io" ,
1050
1070
"email_verified" : true ,
1051
1071
"name" : "Hot Dog" ,
1072
+ "sub" : uuid .NewString (),
1052
1073
},
1053
1074
AssertUser : func (t testing.TB , u codersdk.User ) {
1054
1075
assert .Equal (t , "Hot Dog" , u .Name )
@@ -1065,6 +1086,7 @@ func TestUserOIDC(t *testing.T) {
1065
1086
// However, we should not fail to log someone in if their name is too long.
1066
1087
// Just truncate it.
1067
1088
"name" : strings .Repeat ("a" , 129 ),
1089
+ "sub" : uuid .NewString (),
1068
1090
},
1069
1091
AllowSignups : true ,
1070
1092
StatusCode : http .StatusOK ,
@@ -1080,6 +1102,7 @@ func TestUserOIDC(t *testing.T) {
1080
1102
// Full names must not have leading or trailing whitespace, but this is a
1081
1103
// daft reason to fail a login.
1082
1104
"name" : " Bobby Whitespace " ,
1105
+ "sub" : uuid .NewString (),
1083
1106
},
1084
1107
AllowSignups : true ,
1085
1108
StatusCode : http .StatusOK ,
@@ -1096,6 +1119,7 @@ func TestUserOIDC(t *testing.T) {
1096
1119
"email_verified" : true ,
1097
1120
"name" : "Kylium Carbonate" ,
1098
1121
"preferred_username" : "kyle@kwc.io" ,
1122
+ "sub" : uuid .NewString (),
1099
1123
},
1100
1124
AssertUser : func (t testing.TB , u codersdk.User ) {
1101
1125
assert .Equal (t , "kyle" , u .Username )
@@ -1108,6 +1132,7 @@ func TestUserOIDC(t *testing.T) {
1108
1132
Name : "UsernameIsEmail" ,
1109
1133
IDTokenClaims : jwt.MapClaims {
1110
1134
"preferred_username" : "kyle@kwc.io" ,
1135
+ "sub" : uuid .NewString (),
1111
1136
},
1112
1137
AssertUser : func (t testing.TB , u codersdk.User ) {
1113
1138
assert .Equal (t , "kyle" , u .Username )
@@ -1123,6 +1148,7 @@ func TestUserOIDC(t *testing.T) {
1123
1148
"email_verified" : true ,
1124
1149
"preferred_username" : "kyle" ,
1125
1150
"picture" : "/example.png" ,
1151
+ "sub" : uuid .NewString (),
1126
1152
},
1127
1153
AssertUser : func (t testing.TB , u codersdk.User ) {
1128
1154
assert .Equal (t , "/example.png" , u .AvatarURL )
@@ -1136,6 +1162,7 @@ func TestUserOIDC(t *testing.T) {
1136
1162
IDTokenClaims : jwt.MapClaims {
1137
1163
"email" : "kyle@kwc.io" ,
1138
1164
"email_verified" : true ,
1165
+ "sub" : uuid .NewString (),
1139
1166
},
1140
1167
UserInfoClaims : jwt.MapClaims {
1141
1168
"preferred_username" : "potato" ,
@@ -1155,6 +1182,7 @@ func TestUserOIDC(t *testing.T) {
1155
1182
IDTokenClaims : jwt.MapClaims {
1156
1183
"email" : "coolin@coder.com" ,
1157
1184
"groups" : []string {"pingpong" },
1185
+ "sub" : uuid .NewString (),
1158
1186
},
1159
1187
AllowSignups : true ,
1160
1188
StatusCode : http .StatusOK ,
@@ -1164,6 +1192,7 @@ func TestUserOIDC(t *testing.T) {
1164
1192
IDTokenClaims : jwt.MapClaims {
1165
1193
"email" : "internaluser@internal.domain" ,
1166
1194
"email_verified" : false ,
1195
+ "sub" : uuid .NewString (),
1167
1196
},
1168
1197
UserInfoClaims : jwt.MapClaims {
1169
1198
"email" : "externaluser@external.domain" ,
@@ -1182,6 +1211,7 @@ func TestUserOIDC(t *testing.T) {
1182
1211
IDTokenClaims : jwt.MapClaims {
1183
1212
"email" : "internaluser@internal.domain" ,
1184
1213
"email_verified" : false ,
1214
+ "sub" : uuid .NewString (),
1185
1215
},
1186
1216
UserInfoClaims : jwt.MapClaims {
1187
1217
"email" : 1 ,
@@ -1197,6 +1227,7 @@ func TestUserOIDC(t *testing.T) {
1197
1227
"email_verified" : true ,
1198
1228
"name" : "User McName" ,
1199
1229
"preferred_username" : "user" ,
1230
+ "sub" : uuid .NewString (),
1200
1231
},
1201
1232
UserInfoClaims : jwt.MapClaims {
1202
1233
"email" : "user.mcname@external.domain" ,
@@ -1216,6 +1247,7 @@ func TestUserOIDC(t *testing.T) {
1216
1247
IDTokenClaims : inflateClaims (t , jwt.MapClaims {
1217
1248
"email" : "user@domain.tld" ,
1218
1249
"email_verified" : true ,
1250
+ "sub" : uuid .NewString (),
1219
1251
}, 65536 ),
1220
1252
AssertUser : func (t testing.TB , u codersdk.User ) {
1221
1253
assert .Equal (t , "user" , u .Username )
@@ -1228,6 +1260,7 @@ func TestUserOIDC(t *testing.T) {
1228
1260
IDTokenClaims : jwt.MapClaims {
1229
1261
"email" : "user@domain.tld" ,
1230
1262
"email_verified" : true ,
1263
+ "sub" : uuid .NewString (),
1231
1264
},
1232
1265
UserInfoClaims : inflateClaims (t , jwt.MapClaims {}, 65536 ),
1233
1266
AssertUser : func (t testing.TB , u codersdk.User ) {
@@ -1242,6 +1275,7 @@ func TestUserOIDC(t *testing.T) {
1242
1275
"iss" : "https://mismatch.com" ,
1243
1276
"email" : "user@domain.tld" ,
1244
1277
"email_verified" : true ,
1278
+ "sub" : uuid .NewString (),
1245
1279
},
1246
1280
AllowSignups : true ,
1247
1281
StatusCode : http .StatusBadRequest ,
0 commit comments