@better-auth/sso 1.4.0-beta.24 → 1.4.0-beta.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
 
2
- > @better-auth/sso@1.4.0-beta.24 build /home/runner/work/better-auth/better-auth/packages/sso
2
+ > @better-auth/sso@1.4.0-beta.27 build /home/runner/work/better-auth/better-auth/packages/sso
3
3
  > tsdown
4
4
 
5
5
  ℹ tsdown v0.16.5 powered by rolldown v1.0.0-beta.50
@@ -7,10 +7,10 @@
7
7
  ℹ entry: src/index.ts, src/client.ts
8
8
  ℹ tsconfig: tsconfig.json
9
9
  ℹ Build start
10
- ℹ dist/index.mjs 57.85 kB │ gzip: 10.36 kB
10
+ ℹ dist/index.mjs 58.49 kB │ gzip: 10.33 kB
11
11
  ℹ dist/client.mjs  0.15 kB │ gzip: 0.14 kB
12
- ℹ dist/client.d.mts  0.49 kB │ gzip: 0.29 kB
12
+ ℹ dist/client.d.mts  0.49 kB │ gzip: 0.30 kB
13
13
  ℹ dist/index.d.mts  0.21 kB │ gzip: 0.15 kB
14
- ℹ dist/index-BdGHTkZi.d.mts 25.39 kB │ gzip: 3.95 kB
15
- ℹ 5 files, total: 84.10 kB
16
- ✔ Build complete in 11149ms
14
+ ℹ dist/index-D-JmJR9N.d.mts 25.42 kB │ gzip: 3.95 kB
15
+ ℹ 5 files, total: 84.77 kB
16
+ ✔ Build complete in 11560ms
package/dist/client.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { t as SSOPlugin } from "./index-BdGHTkZi.mjs";
1
+ import { t as SSOPlugin } from "./index-D-JmJR9N.mjs";
2
2
 
3
3
  //#region src/client.d.ts
4
4
  interface SSOClientOptions {
@@ -743,7 +743,7 @@ declare const callbackSSO: (options?: SSOOptions) => better_call0.StrictEndpoint
743
743
  }, z.core.$strip>;
744
744
  allowedMediaTypes: string[];
745
745
  metadata: {
746
- isAction: boolean;
746
+ isAction: false;
747
747
  openapi: {
748
748
  operationId: string;
749
749
  summary: string;
@@ -765,7 +765,8 @@ declare const callbackSSOSAML: (options?: SSOOptions) => better_call0.StrictEndp
765
765
  RelayState: z.ZodOptional<z.ZodString>;
766
766
  }, z.core.$strip>;
767
767
  metadata: {
768
- isAction: boolean;
768
+ isAction: false;
769
+ allowedMediaTypes: string[];
769
770
  openapi: {
770
771
  operationId: string;
771
772
  summary: string;
@@ -796,7 +797,7 @@ declare const acsEndpoint: (options?: SSOOptions) => better_call0.StrictEndpoint
796
797
  RelayState: z.ZodOptional<z.ZodString>;
797
798
  }, z.core.$strip>;
798
799
  metadata: {
799
- isAction: boolean;
800
+ isAction: false;
800
801
  allowedMediaTypes: string[];
801
802
  openapi: {
802
803
  operationId: string;
package/dist/index.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as SSOOptions, i as SAMLConfig, n as sso, o as SSOProvider, r as OIDCConfig, t as SSOPlugin } from "./index-BdGHTkZi.mjs";
1
+ import { a as SSOOptions, i as SAMLConfig, n as sso, o as SSOProvider, r as OIDCConfig, t as SSOPlugin } from "./index-D-JmJR9N.mjs";
2
2
  export { OIDCConfig, SAMLConfig, SSOOptions, SSOPlugin, SSOProvider, sso };
package/dist/index.mjs CHANGED
@@ -751,8 +751,18 @@ const signInSSO = (options) => {
751
751
  if (provider.samlConfig) {
752
752
  const parsedSamlConfig = typeof provider.samlConfig === "object" ? provider.samlConfig : safeJsonParse(provider.samlConfig);
753
753
  if (!parsedSamlConfig) throw new APIError("BAD_REQUEST", { message: "Invalid SAML configuration" });
754
+ let metadata = parsedSamlConfig.spMetadata.metadata;
755
+ if (!metadata) metadata = saml.SPMetadata({
756
+ entityID: parsedSamlConfig.spMetadata?.entityID || parsedSamlConfig.issuer,
757
+ assertionConsumerService: [{
758
+ Binding: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST",
759
+ Location: parsedSamlConfig.callbackUrl || `${ctx.context.baseURL}/sso/saml2/sp/acs/${provider.providerId}`
760
+ }],
761
+ wantMessageSigned: parsedSamlConfig.wantAssertionsSigned || false,
762
+ nameIDFormat: parsedSamlConfig.identifierFormat ? [parsedSamlConfig.identifierFormat] : void 0
763
+ }).getMetadata() || "";
754
764
  const sp = saml.ServiceProvider({
755
- metadata: parsedSamlConfig.spMetadata.metadata,
765
+ metadata,
756
766
  allowCreate: true
757
767
  });
758
768
  const idp = saml.IdentityProvider({
@@ -965,6 +975,7 @@ const callbackSSOSAML = (options) => {
965
975
  }),
966
976
  metadata: {
967
977
  isAction: false,
978
+ allowedMediaTypes: ["application/x-www-form-urlencoded", "application/json"],
968
979
  openapi: {
969
980
  operationId: "handleSAMLCallback",
970
981
  summary: "Callback URL for SAML provider",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@better-auth/sso",
3
3
  "author": "Bereket Engida",
4
- "version": "1.4.0-beta.24",
4
+ "version": "1.4.0-beta.27",
5
5
  "type": "module",
6
6
  "main": "dist/index.mjs",
7
7
  "homepage": "https://www.better-auth.com/docs/plugins/sso",
@@ -60,15 +60,15 @@
60
60
  "devDependencies": {
61
61
  "@types/body-parser": "^1.19.6",
62
62
  "@types/express": "^5.0.5",
63
- "better-call": "1.0.28",
63
+ "better-call": "1.1.0",
64
64
  "body-parser": "^2.2.0",
65
65
  "express": "^5.1.0",
66
66
  "oauth2-mock-server": "^7.2.1",
67
67
  "tsdown": "^0.16.0",
68
- "better-auth": "1.4.0-beta.24"
68
+ "better-auth": "1.4.0-beta.27"
69
69
  },
70
70
  "peerDependencies": {
71
- "better-auth": "1.4.0-beta.24"
71
+ "better-auth": "1.4.0-beta.27"
72
72
  },
73
73
  "scripts": {
74
74
  "test": "vitest",
package/src/routes/sso.ts CHANGED
@@ -1039,8 +1039,35 @@ export const signInSSO = (options?: SSOOptions) => {
1039
1039
  message: "Invalid SAML configuration",
1040
1040
  });
1041
1041
  }
1042
+
1043
+ let metadata = parsedSamlConfig.spMetadata.metadata;
1044
+
1045
+ if (!metadata) {
1046
+ metadata =
1047
+ saml
1048
+ .SPMetadata({
1049
+ entityID:
1050
+ parsedSamlConfig.spMetadata?.entityID ||
1051
+ parsedSamlConfig.issuer,
1052
+ assertionConsumerService: [
1053
+ {
1054
+ Binding: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST",
1055
+ Location:
1056
+ parsedSamlConfig.callbackUrl ||
1057
+ `${ctx.context.baseURL}/sso/saml2/sp/acs/${provider.providerId}`,
1058
+ },
1059
+ ],
1060
+ wantMessageSigned:
1061
+ parsedSamlConfig.wantAssertionsSigned || false,
1062
+ nameIDFormat: parsedSamlConfig.identifierFormat
1063
+ ? [parsedSamlConfig.identifierFormat]
1064
+ : undefined,
1065
+ })
1066
+ .getMetadata() || "";
1067
+ }
1068
+
1042
1069
  const sp = saml.ServiceProvider({
1043
- metadata: parsedSamlConfig.spMetadata.metadata,
1070
+ metadata: metadata,
1044
1071
  allowCreate: true,
1045
1072
  });
1046
1073
 
@@ -1452,6 +1479,10 @@ export const callbackSSOSAML = (options?: SSOOptions) => {
1452
1479
  }),
1453
1480
  metadata: {
1454
1481
  isAction: false,
1482
+ allowedMediaTypes: [
1483
+ "application/x-www-form-urlencoded",
1484
+ "application/json",
1485
+ ],
1455
1486
  openapi: {
1456
1487
  operationId: "handleSAMLCallback",
1457
1488
  summary: "Callback URL for SAML provider",