diff --git a/infisical_sdk/resources/auth.py b/infisical_sdk/resources/auth.py index 1117bc5..ece95c2 100644 --- a/infisical_sdk/resources/auth.py +++ b/infisical_sdk/resources/auth.py @@ -1,10 +1,11 @@ from infisical_sdk.infisical_requests import InfisicalRequests from infisical_sdk.resources.auth_methods import AWSAuth from infisical_sdk.resources.auth_methods import UniversalAuth - +from infisical_sdk.resources.auth_methods import OidcAuth from typing import Callable class Auth: def __init__(self, requests: InfisicalRequests, setToken: Callable[[str], None]): self.requests = requests self.aws_auth = AWSAuth(requests, setToken) - self.universal_auth = UniversalAuth(requests, setToken) \ No newline at end of file + self.universal_auth = UniversalAuth(requests, setToken) + self.oidc_auth = OidcAuth(requests, setToken) \ No newline at end of file diff --git a/infisical_sdk/resources/auth_methods/__init__.py b/infisical_sdk/resources/auth_methods/__init__.py index 151ae79..d5eed91 100644 --- a/infisical_sdk/resources/auth_methods/__init__.py +++ b/infisical_sdk/resources/auth_methods/__init__.py @@ -1,2 +1,3 @@ from .aws_auth import AWSAuth from .universal_auth import UniversalAuth +from .oidc_auth import OidcAuth diff --git a/infisical_sdk/resources/auth_methods/oidc_auth.py b/infisical_sdk/resources/auth_methods/oidc_auth.py new file mode 100644 index 0000000..266ef23 --- /dev/null +++ b/infisical_sdk/resources/auth_methods/oidc_auth.py @@ -0,0 +1,36 @@ +from infisical_sdk.api_types import MachineIdentityLoginResponse + +from typing import Callable +from infisical_sdk.infisical_requests import InfisicalRequests + +class OidcAuth: + def __init__(self, requests: InfisicalRequests, setToken: Callable[[str], None]): + self.requests = requests + self.setToken = setToken + + def login(self, identity_id: str, jwt: str) -> MachineIdentityLoginResponse: + """ + Login with OIDC Auth. + + Args: + identity_id (str): Your Machine Identity ID. + jwt (str): Your OIDC JWT. + + Returns: + MachineIdentityLoginResponse: A response object containing the access token and related information. + """ + + requestBody = { + "identityId": identity_id, + "jwt": jwt + } + + result = self.requests.post( + path="/api/v1/auth/oidc-auth/login", + json=requestBody, + model=MachineIdentityLoginResponse + ) + + self.setToken(result.data.accessToken) + + return result.data \ No newline at end of file