Skip to content

feat(auth): multi provider authentication system#183

Draft
markcrivera wants to merge 11 commits into
mainfrom
feat/multi-provider-auth
Draft

feat(auth): multi provider authentication system#183
markcrivera wants to merge 11 commits into
mainfrom
feat/multi-provider-auth

Conversation

@markcrivera
Copy link
Copy Markdown
Collaborator

Replaces single provider OIDC/LDAP with a flexible multi-provider architecture supporting multiple simultaneous instances per type and adding OAuth 2.0

closes: #3
closes: #171

Replaces single provider OIDC/LDAP with a flexible multi-provider
architecture supporting multiple simultaneous instances per type and
adding OAuth 2.0

Signed-off-by: Mark Rivera <mcrivera@gmail.com>
@Amndeep7 Amndeep7 temporarily deployed to tir-feat-multi-provider-racujz May 11, 2026 19:47 Inactive
Signed-off-by: Mark Rivera <mcrivera@gmail.com>
Signed-off-by: Mark Rivera <mcrivera@gmail.com>
@Amndeep7 Amndeep7 temporarily deployed to tir-feat-multi-provider-racujz May 12, 2026 14:55 Inactive
Comment thread server/auth/oidcAuthProvider.ts Dismissed
Move cookie string literals to AUTH_COOKIES constant.

Signed-off-by: Mark Rivera <mcrivera@gmail.com>
@Amndeep7 Amndeep7 temporarily deployed to tir-feat-multi-provider-racujz May 13, 2026 00:28 Inactive
Signed-off-by: Mark Rivera <mcrivera@gmail.com>
@Amndeep7 Amndeep7 temporarily deployed to tir-feat-multi-provider-racujz May 13, 2026 01:07 Inactive
Signed-off-by: Mark Rivera <mcrivera@gmail.com>
@Amndeep7 Amndeep7 temporarily deployed to tir-feat-multi-provider-racujz May 13, 2026 02:44 Inactive
@Amndeep7 Amndeep7 temporarily deployed to mitre-tir-staging May 15, 2026 18:52 Inactive
Signed-off-by: Mark Rivera <mcrivera@gmail.com>
@Amndeep7 Amndeep7 temporarily deployed to mitre-tir-staging May 15, 2026 20:07 Inactive
Signed-off-by: Mark Rivera <mcrivera@gmail.com>
title="Requires saved config — opens the full OIDC login flow in a new tab"
@click="testOIDCLogin(provider.id)"
>
Test Login <UIcon name="i-heroicons-arrow-top-right-on-square" class="h-3 w-3" />
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please remove this functionality since it gets confusing for the end user to realize that they'd been logged out of the admin/prior account that they had been in when it goes and tests the login for the other service

/>
</div>
<div class="flex items-center gap-4">
<label class="w-48 text-left text-sm font-medium">Callback URL</label>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you should consider adding a help tooltip to clarify that this default value is likely good enough and that you will need to provide this callback url to the auth provider

class="text-sm font-semibold text-indigo-600 hover:bg-indigo-500"
@click="saveAuthConfig"
>
Save
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

non-blocking: you should consider making this button actually be stylized as a button instead of being a word. other 'buttons' on the page are stylized as such.

@@ -1,20 +1,52 @@
<template>
<dl class="mb-6 space-y-6 divide-y divide-gray-100 border-b border-t border-gray-200 pb-6 pt-6 text-sm leading-6">
<!-- Default Login Tab -->
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

have a tooltip that explains that the 'default tab' is for when you have to type in your username/password, and that the remainder of the SSO options will show up on the list below

Comment thread components/login/LoginForm.vue
</div>
</dd>

<!-- Local Auth -->
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the default password requirements should probably match the AS&D (i.e. 15 chars, 1 of each character class)

@@ -1,20 +1,52 @@
<template>
<dl class="mb-6 space-y-6 divide-y divide-gray-100 border-b border-t border-gray-200 pb-6 pt-6 text-sm leading-6">
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it feels weird that the divider between the different auth options in their list is the same as the divider between all the other UI bits that appear vertically

note the horizontal line with same styling + size for everything

Image Image

Signed-off-by: Mark Rivera <mcrivera@gmail.com>
Groups are read from a configurable LDAP attribute (default: memberOf),
CNs are extracted from DNs, and mapped to roles using the same
groupName:roleId format as OIDC/OAuth. Access is denied when mappings
are configured but the user matches no group.

Signed-off-by: Mark Rivera <mcrivera@gmail.com>
Removes CN extraction so groups with identical CNs in different OUs are
unambiguous. Pipe delimiter avoids conflicts with commas inside DNs.
OIDC/OAuth mapping parsing is unchanged (still comma-delimited).

Signed-off-by: Mark Rivera <mcrivera@gmail.com>
@sonarqubecloud
Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature request: allow multiple SSO login methods at the same time Implement Auth in TIR

3 participants