diff --git a/nss_pam_oidc/__init__.py b/nss_pam_oidc/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/nss_pam_oidc/pam.py b/nss_pam_oidc/pam.py
new file mode 100644
index 0000000000000000000000000000000000000000..f0d51814b58f6aa2804d76dd7c3978c0cda537b6
--- /dev/null
+++ b/nss_pam_oidc/pam.py
@@ -0,0 +1,37 @@
+# Copyright 2021 Dominik George <nik@naturalnet.de>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+def pam_sm_authenticate(pamh, flags, argv):
+  try:
+    user = pamh.get_user(None)
+  except pamh.exception as e:
+    return e.pam_result
+  if user == None:
+    pamh.user = DEFAULT_USER
+  return pamh.PAM_SUCCESS
+
+def pam_sm_setcred(pamh, flags, argv):
+  return pamh.PAM_SUCCESS
+
+def pam_sm_acct_mgmt(pamh, flags, argv):
+  return pamh.PAM_SUCCESS
+
+def pam_sm_open_session(pamh, flags, argv):
+  return pamh.PAM_SUCCESS
+
+def pam_sm_close_session(pamh, flags, argv):
+  return pamh.PAM_SUCCESS
+
+def pam_sm_chauthtok(pamh, flags, argv):
+  return pamh.PAM_SUCCESS