Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
simple-oauth2-ts-client
Advanced tools
So for the Implementation of the Library, i have followed the specs proposed by IETF OAuth Working Group.
So Basic flow of the protocol:
It is a light weight package only has axios
as its dependencies, uses web crypto
which are built-in since Node 18 (but it works with Polyfills on Node 14 and 16).
It is platform agnostic which can be used in both client and server javascript environment .
Following OAuth Grant, it Supports
Install simple-oauth2-ts-client with npm
npm i simple-oauth2-ts-client
To get started with initialize the client with the following attributes
const client =new OAuthClient({
auth_server: string; //authorisation server domain endpoint
client_id: string; // provided by auth server for public client
client_secret?: string; // provided by auth server for confidential client
redirect_uri: string; // redirection uri for Authorization Code && implicit grant type
authorization_endpoint?: string; // @default /authorize
token_endpoint?: string; // @default /token
authenticationMethod?: "client_secret_basic" | "client_secret_post" | "none";
})
This client Object has following method to use for various purposes
// This will return redirection uri -->
await client.startAuthFlow(
params: OAuthStartAuthFlow
): Promise<OAuthStartAuthFlowResponse> // can be used for Authorization Code or implicit grants
// to handle successful redirection uri
await client.handleCallback(params: {
uri: string; // redirection back uri
grant_type: OAuth2GrantType; // use authorization_code for Authorization Code grant type
state?: string; // // Optional string that can be sent along to the auth server. This value will
// be sent along with the redirect back to the app verbatim.
code_verifier?: string; // to support PKCE
}): Promise<OAuth2Token>
// to handle refresh token
await client.refreshToken(
refreshToken: string,
params?: RefreshParams
): Promise<OAuth2Token>
To generate code verifier and codeChallenge , it exports uility function to do This
await generateCodeVerifier(): Promise<string>
I have no idea about the clear picture of inner working of the OAuth 2.0, so going though https://oauth.net/2/ specs helps me a lot to clear things out. I was intiially using webpack build, but not able debug properly the errors, and test the lib in real application, so i have to use npm link, and local implementation to clear thing out .
To suppor crypo lib in both client, and server runtime, i have to explore how can i achieve it , then i have came across the stack overflow ans about the various implementions in various environments
async function getWebCrypto(): Promise<typeof window.crypto> {
// Browsers
if (typeof window !== "undefined" && window.crypto) {
if (!window.crypto.subtle?.digest) {
throw new Error(
"The context/environment is not secure, and does not support the 'crypto.subtle' module. See: https://developer.mozilla.org/en-US/docs/Web/API/Crypto/subtle for details"
);
}
return window.crypto;
}
// Web workers possibly
if (typeof self !== "undefined" && self.crypto) {
return self.crypto;
}
// Node
// eslint-disable-next-line @typescript-eslint/no-var-requires
const crypto = await import("crypto");
return crypto.webcrypto as typeof window.crypto;
}
This helps me to generate code verifier and code challenge without using any third party library.
Client side implementation, used Auth0 Provider for the auth server
Live Demo: https://oauth-client.vercel.app/
Dummy Credentials
User Email : test@test.com
Password: xzH@$ubp25744Y9
Server Side Implementions ( used Next Js SSR)
Live Demo: https://oauth-client-gt7y.vercel.app/
Dummy Credentials
User Email : test@test.com
Password: xzH@$ubp25744Y9
FAQs
A TypeScript OAuth 2.0 client library
We found that simple-oauth2-ts-client demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.