@ianlucas/remix-auth-steam 5.0.1 → 6.0.0-beta.1
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.
- package/dist/index.d.ts +1 -7
- package/dist/index.js +11 -55
- package/dist/index.js.map +1 -1
- package/dist/openid.d.ts +57 -0
- package/dist/openid.js +165 -0
- package/dist/openid.js.map +1 -0
- package/package.json +5 -11
package/dist/index.d.ts
CHANGED
|
@@ -1,23 +1,17 @@
|
|
|
1
1
|
import { Strategy } from "remix-auth/strategy";
|
|
2
|
-
import { type UserSummary } from "steamapi";
|
|
3
2
|
declare namespace SteamStrategy {
|
|
4
3
|
interface Options {
|
|
5
|
-
apiKey: string;
|
|
6
|
-
onError?: (error: unknown) => void;
|
|
7
|
-
realm?: string;
|
|
8
4
|
returnURL: string;
|
|
9
5
|
}
|
|
10
6
|
type VerifyOptions = {
|
|
11
7
|
request: Request;
|
|
12
|
-
|
|
8
|
+
userID: string;
|
|
13
9
|
};
|
|
14
10
|
}
|
|
15
11
|
export declare class SteamStrategy<User> extends Strategy<User, SteamStrategy.VerifyOptions> {
|
|
16
12
|
private options;
|
|
17
13
|
name: string;
|
|
18
14
|
constructor(options: SteamStrategy.Options | ((request: Request) => Promise<SteamStrategy.Options>), verify: Strategy.VerifyFunction<User, SteamStrategy.VerifyOptions>);
|
|
19
|
-
private authenticateToSteam;
|
|
20
|
-
private verifySteamAssertion;
|
|
21
15
|
authenticate(request: Request): Promise<User>;
|
|
22
16
|
}
|
|
23
17
|
export {};
|
package/dist/index.js
CHANGED
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
* Copyright (c) Ian Lucas. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
import OpenID from "openid";
|
|
6
5
|
import { redirect } from "react-router";
|
|
7
6
|
import { Strategy } from "remix-auth/strategy";
|
|
8
|
-
import
|
|
7
|
+
import { SteamOpenID } from "./openid.js";
|
|
9
8
|
export class SteamStrategy extends Strategy {
|
|
10
9
|
options;
|
|
11
10
|
name = "steam";
|
|
@@ -13,61 +12,18 @@ export class SteamStrategy extends Strategy {
|
|
|
13
12
|
super(verify);
|
|
14
13
|
this.options = options;
|
|
15
14
|
}
|
|
16
|
-
authenticateToSteam(relyingParty) {
|
|
17
|
-
return new Promise((resolve, reject) => relyingParty.authenticate("https://steamcommunity.com/openid", false, (err, url) => {
|
|
18
|
-
if (err) {
|
|
19
|
-
return reject(err);
|
|
20
|
-
}
|
|
21
|
-
if (!url) {
|
|
22
|
-
return reject("Got no URL from authenticate method.");
|
|
23
|
-
}
|
|
24
|
-
return resolve(url);
|
|
25
|
-
}));
|
|
26
|
-
}
|
|
27
|
-
verifySteamAssertion(relyingParty, request) {
|
|
28
|
-
return new Promise((resolve, reject) => relyingParty.verifyAssertion(request, (err, result) => {
|
|
29
|
-
if (err) {
|
|
30
|
-
return reject(err);
|
|
31
|
-
}
|
|
32
|
-
if (!result) {
|
|
33
|
-
return reject("No result from verifyAssertion.");
|
|
34
|
-
}
|
|
35
|
-
return resolve(result);
|
|
36
|
-
}));
|
|
37
|
-
}
|
|
38
15
|
async authenticate(request) {
|
|
39
|
-
const {
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const steamApi = new SteamAPI(apiKey);
|
|
48
|
-
const url = new URL(request.url);
|
|
49
|
-
const callbackUrl = new URL(returnURL);
|
|
50
|
-
if (url.pathname === callbackUrl.pathname) {
|
|
51
|
-
const result = await this.verifySteamAssertion(relyingParty, request);
|
|
52
|
-
if (!result.authenticated || !result.claimedIdentifier) {
|
|
53
|
-
throw new Error("Not authenticated from result.");
|
|
54
|
-
}
|
|
55
|
-
const userId = result.claimedIdentifier.toString().split("/").at(-1);
|
|
56
|
-
if (userId === undefined) {
|
|
57
|
-
throw new Error("Unable to get SteamID.");
|
|
58
|
-
}
|
|
59
|
-
return await this.verify({
|
|
60
|
-
user: (await steamApi.getUserSummary(userId)),
|
|
61
|
-
request
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
throw redirect(await this.authenticateToSteam(relyingParty));
|
|
66
|
-
}
|
|
16
|
+
const { returnURL } = typeof this.options === "function" ? await this.options(request) : this.options;
|
|
17
|
+
const steamOpenID = new SteamOpenID(returnURL, request);
|
|
18
|
+
if (steamOpenID.shouldValidate()) {
|
|
19
|
+
const userID = await steamOpenID.validate();
|
|
20
|
+
return await this.verify({
|
|
21
|
+
userID,
|
|
22
|
+
request
|
|
23
|
+
});
|
|
67
24
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
throw error;
|
|
25
|
+
else {
|
|
26
|
+
throw redirect(steamOpenID.getAuthUrl());
|
|
71
27
|
}
|
|
72
28
|
}
|
|
73
29
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAa1C,MAAM,OAAO,aAAoB,SAAQ,QAA2C;IAIpE;IAHZ,IAAI,GAAG,OAAO,CAAC;IAEf,YACY,OAAuF,EAC/F,MAAkE;QAElE,KAAK,CAAC,MAAM,CAAC,CAAC;QAHN,YAAO,GAAP,OAAO,CAAgF;IAInG,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAgB;QAC/B,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QACtG,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACxD,IAAI,WAAW,CAAC,cAAc,EAAE,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC5C,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC;gBACrB,MAAM;gBACN,OAAO;aACV,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,MAAM,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;CACJ"}
|
package/dist/openid.d.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A correct and simple implementation of OpenID authentication for Steam.
|
|
3
|
+
* @see https://github.com/xPaw/SteamOpenID.php
|
|
4
|
+
*/
|
|
5
|
+
export declare class SteamOpenID {
|
|
6
|
+
private static readonly SERVER;
|
|
7
|
+
private static readonly OPENID_NS;
|
|
8
|
+
private static readonly EXPECTED_SIGNED;
|
|
9
|
+
private static readonly STEAM_ID_REGEX;
|
|
10
|
+
/**
|
|
11
|
+
* The URL to which Steam will redirect the user after authentication.
|
|
12
|
+
* This is also used to validate the "openid.return_to" parameter.
|
|
13
|
+
*/
|
|
14
|
+
readonly returnUrl: string;
|
|
15
|
+
/**
|
|
16
|
+
* The search parameters from the incoming request URL.
|
|
17
|
+
*/
|
|
18
|
+
private readonly params;
|
|
19
|
+
/**
|
|
20
|
+
* Creates an instance of the SteamOpenID authenticator.
|
|
21
|
+
* @param returnUrl The URL to which Steam should return. Must match the "openid.return_to" parameter on callback.
|
|
22
|
+
* @param request The incoming web request object.
|
|
23
|
+
*/
|
|
24
|
+
constructor(returnUrl: string, request: Request);
|
|
25
|
+
/**
|
|
26
|
+
* Returns `true` if the request URL contains the necessary parameters to be validated.
|
|
27
|
+
* This indicates the user has been redirected back from Steam.
|
|
28
|
+
*/
|
|
29
|
+
shouldValidate(): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Gets the Steam authentication URL to redirect the user to.
|
|
32
|
+
* @returns The authentication URL.
|
|
33
|
+
*/
|
|
34
|
+
getAuthUrl(): string;
|
|
35
|
+
/**
|
|
36
|
+
* Validates the authentication request from Steam.
|
|
37
|
+
* @returns A `Promise` that resolves with the user's 64-bit SteamID.
|
|
38
|
+
* @throws An `Error` if validation fails at any step.
|
|
39
|
+
*/
|
|
40
|
+
validate(): Promise<string>;
|
|
41
|
+
/**
|
|
42
|
+
* Sends the verification request to the Steam server.
|
|
43
|
+
* Can be overridden for custom request logic (e.g., using a proxy).
|
|
44
|
+
* @param params The parameters to send in the POST body.
|
|
45
|
+
* @returns The response body as a string.
|
|
46
|
+
*/
|
|
47
|
+
protected sendVerificationRequest(params: URLSearchParams): Promise<string>;
|
|
48
|
+
/**
|
|
49
|
+
* Retrieves required OpenID arguments from the request's query parameters
|
|
50
|
+
* and performs initial validation.
|
|
51
|
+
*/
|
|
52
|
+
private getAndValidateArguments;
|
|
53
|
+
/**
|
|
54
|
+
* Parses a Key-Value response string from Steam.
|
|
55
|
+
*/
|
|
56
|
+
private static parseKeyValues;
|
|
57
|
+
}
|
package/dist/openid.js
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Ian Lucas. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/**
|
|
6
|
+
* A correct and simple implementation of OpenID authentication for Steam.
|
|
7
|
+
* @see https://github.com/xPaw/SteamOpenID.php
|
|
8
|
+
*/
|
|
9
|
+
export class SteamOpenID {
|
|
10
|
+
static SERVER = "https://steamcommunity.com/openid/login";
|
|
11
|
+
static OPENID_NS = "http://specs.openid.net/auth/2.0";
|
|
12
|
+
static EXPECTED_SIGNED = "signed,op_endpoint,claimed_id,identity,return_to,response_nonce,assoc_handle";
|
|
13
|
+
static STEAM_ID_REGEX = /^https:\/\/steamcommunity\.com\/openid\/id\/(76561[0-9]{12})\/?$/;
|
|
14
|
+
/**
|
|
15
|
+
* The URL to which Steam will redirect the user after authentication.
|
|
16
|
+
* This is also used to validate the "openid.return_to" parameter.
|
|
17
|
+
*/
|
|
18
|
+
returnUrl;
|
|
19
|
+
/**
|
|
20
|
+
* The search parameters from the incoming request URL.
|
|
21
|
+
*/
|
|
22
|
+
params;
|
|
23
|
+
/**
|
|
24
|
+
* Creates an instance of the SteamOpenID authenticator.
|
|
25
|
+
* @param returnUrl The URL to which Steam should return. Must match the "openid.return_to" parameter on callback.
|
|
26
|
+
* @param request The incoming web request object.
|
|
27
|
+
*/
|
|
28
|
+
constructor(returnUrl, request) {
|
|
29
|
+
if (!returnUrl || !request) {
|
|
30
|
+
throw new Error("Both returnUrl and request objects are required.");
|
|
31
|
+
}
|
|
32
|
+
this.returnUrl = returnUrl;
|
|
33
|
+
this.params = new URL(request.url).searchParams;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Returns `true` if the request URL contains the necessary parameters to be validated.
|
|
37
|
+
* This indicates the user has been redirected back from Steam.
|
|
38
|
+
*/
|
|
39
|
+
shouldValidate() {
|
|
40
|
+
return this.params.get("openid.mode") === "id_res";
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Gets the Steam authentication URL to redirect the user to.
|
|
44
|
+
* @returns The authentication URL.
|
|
45
|
+
*/
|
|
46
|
+
getAuthUrl() {
|
|
47
|
+
const params = new URLSearchParams({
|
|
48
|
+
"openid.ns": SteamOpenID.OPENID_NS,
|
|
49
|
+
"openid.mode": "checkid_setup",
|
|
50
|
+
"openid.return_to": this.returnUrl,
|
|
51
|
+
"openid.identity": "http://specs.openid.net/auth/2.0/identifier_select",
|
|
52
|
+
"openid.claimed_id": "http://specs.openid.net/auth/2.0/identifier_select"
|
|
53
|
+
});
|
|
54
|
+
return `${SteamOpenID.SERVER}?${params.toString()}`;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Validates the authentication request from Steam.
|
|
58
|
+
* @returns A `Promise` that resolves with the user's 64-bit SteamID.
|
|
59
|
+
* @throws An `Error` if validation fails at any step.
|
|
60
|
+
*/
|
|
61
|
+
async validate() {
|
|
62
|
+
const args = this.getAndValidateArguments();
|
|
63
|
+
// Verify that the request came from the Steam endpoint and matches our parameters
|
|
64
|
+
if (args["openid.op_endpoint"] !== SteamOpenID.SERVER) {
|
|
65
|
+
throw new Error('Invalid "openid.op_endpoint".');
|
|
66
|
+
}
|
|
67
|
+
if (!args["openid.return_to"]?.startsWith(this.returnUrl)) {
|
|
68
|
+
throw new Error('Invalid "openid.return_to".');
|
|
69
|
+
}
|
|
70
|
+
// Extract SteamID from the identity URL
|
|
71
|
+
const match = args["openid.identity"]?.match(SteamOpenID.STEAM_ID_REGEX);
|
|
72
|
+
if (!match || !match[1]) {
|
|
73
|
+
throw new Error('Invalid "openid.identity".');
|
|
74
|
+
}
|
|
75
|
+
const steamId = match[1];
|
|
76
|
+
// Prepare parameters for server-side verification
|
|
77
|
+
const verificationParams = new URLSearchParams(args);
|
|
78
|
+
verificationParams.set("openid.mode", "check_authentication");
|
|
79
|
+
// Make the verification request to Steam
|
|
80
|
+
const response = await this.sendVerificationRequest(verificationParams);
|
|
81
|
+
// Parse Steam's key-value response
|
|
82
|
+
const keyValues = SteamOpenID.parseKeyValues(response);
|
|
83
|
+
// Check if Steam confirmed the validation
|
|
84
|
+
if (keyValues["is_valid"] !== "true" || keyValues["ns"] !== SteamOpenID.OPENID_NS) {
|
|
85
|
+
throw new Error("Failed to validate login with Steam: Invalid response.");
|
|
86
|
+
}
|
|
87
|
+
return steamId;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Sends the verification request to the Steam server.
|
|
91
|
+
* Can be overridden for custom request logic (e.g., using a proxy).
|
|
92
|
+
* @param params The parameters to send in the POST body.
|
|
93
|
+
* @returns The response body as a string.
|
|
94
|
+
*/
|
|
95
|
+
async sendVerificationRequest(params) {
|
|
96
|
+
const response = await fetch(SteamOpenID.SERVER, {
|
|
97
|
+
method: "POST",
|
|
98
|
+
headers: {
|
|
99
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
100
|
+
"User-Agent": "TypeScript-SteamOpenID/1.0.0"
|
|
101
|
+
},
|
|
102
|
+
body: params
|
|
103
|
+
});
|
|
104
|
+
if (!response.ok) {
|
|
105
|
+
if (response.status === 403 || response.status === 429) {
|
|
106
|
+
throw new Error("Steam OpenID endpoint is rate-limited. Please try again later.");
|
|
107
|
+
}
|
|
108
|
+
throw new Error(`Steam verification request failed with HTTP ${response.status}.`);
|
|
109
|
+
}
|
|
110
|
+
return response.text();
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Retrieves required OpenID arguments from the request's query parameters
|
|
114
|
+
* and performs initial validation.
|
|
115
|
+
*/
|
|
116
|
+
getAndValidateArguments() {
|
|
117
|
+
const args = {};
|
|
118
|
+
const signedKeys = SteamOpenID.EXPECTED_SIGNED.split(",");
|
|
119
|
+
for (const key of signedKeys) {
|
|
120
|
+
// The 'openid.' prefix is implicit for keys in EXPECTED_SIGNED
|
|
121
|
+
const openIdKey = `openid.${key}`;
|
|
122
|
+
const value = this.params.get(openIdKey);
|
|
123
|
+
if (!value) {
|
|
124
|
+
throw new Error(`Missing required OpenID parameter: "${openIdKey}".`);
|
|
125
|
+
}
|
|
126
|
+
args[openIdKey] = value;
|
|
127
|
+
}
|
|
128
|
+
// Add other required fields not in the 'signed' list
|
|
129
|
+
const otherRequiredKeys = ["openid.mode", "openid.sig"];
|
|
130
|
+
for (const key of otherRequiredKeys) {
|
|
131
|
+
const value = this.params.get(key);
|
|
132
|
+
if (!value) {
|
|
133
|
+
throw new Error(`Missing required OpenID parameter: "${key}".`);
|
|
134
|
+
}
|
|
135
|
+
args[key] = value;
|
|
136
|
+
}
|
|
137
|
+
if (args["openid.mode"] !== "id_res") {
|
|
138
|
+
throw new Error('Invalid "openid.mode". Expected "id_res".');
|
|
139
|
+
}
|
|
140
|
+
if (args["openid.ns"] !== SteamOpenID.OPENID_NS) {
|
|
141
|
+
throw new Error('Invalid "openid.ns".');
|
|
142
|
+
}
|
|
143
|
+
if (args["openid.signed"] !== SteamOpenID.EXPECTED_SIGNED) {
|
|
144
|
+
throw new Error('Invalid "openid.signed" field.');
|
|
145
|
+
}
|
|
146
|
+
return args;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Parses a Key-Value response string from Steam.
|
|
150
|
+
*/
|
|
151
|
+
static parseKeyValues(response) {
|
|
152
|
+
const data = {};
|
|
153
|
+
const lines = response.trim().split("\n");
|
|
154
|
+
for (const line of lines) {
|
|
155
|
+
const separatorIndex = line.indexOf(":");
|
|
156
|
+
if (separatorIndex !== -1) {
|
|
157
|
+
const key = line.substring(0, separatorIndex);
|
|
158
|
+
const value = line.substring(separatorIndex + 1);
|
|
159
|
+
data[key] = value;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return data;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=openid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openid.js","sourceRoot":"","sources":["../src/openid.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -28,16 +28,10 @@
|
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@total-typescript/tsconfig": "^1.0.4",
|
|
31
|
-
"@types/node": "^22.
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"typedoc": "^0.27.0",
|
|
36
|
-
"typescript": "^5.7.2"
|
|
31
|
+
"@types/node": "^22.16.4",
|
|
32
|
+
"prettier": "^3.6.2",
|
|
33
|
+
"typedoc": "^0.28.7",
|
|
34
|
+
"typescript": "^5.8.3"
|
|
37
35
|
},
|
|
38
|
-
"
|
|
39
|
-
"openid": "^2.0.12",
|
|
40
|
-
"steamapi": "^3.0.12"
|
|
41
|
-
},
|
|
42
|
-
"version": "5.0.1"
|
|
36
|
+
"version": "6.0.0-beta.1"
|
|
43
37
|
}
|