canonical / canonical/authd

Issue: authd provider selection rejects all input over SSH on Ubuntu 24.04

Open
#1,757 7 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Go
Stars
308
Forks
41
Avg merge
2d 4h
Merged PRs (30d)
58

Description

### Is there an existing issue for this?

- [x] I have searched the existing issues and found none that matched mine

### Describe the issue

Ubuntu Server 24.04

authd:
0.6.4~ubuntu24.04

Tested with:

authd-msentraid 0.4.0 (stable)
authd-msentraid 0.4.1 (candidate)

Azure / Microsoft Entra configuration:

- Tenant configured
- Client ID configured
- GroupMember.Read.All Application Permission granted
- Admin Consent granted

Broker registration:

com.ubuntu.authd.MSEntraID

Issue:

SSH login prompts for provider selection:

== Provider selection ==
1. local
2. Microsoft Entra ID

Entering:

1
2
local
Microsoft Entra ID

always returns:

Unsupported input

Reproduced locally:

ssh localhost -l user@domain.com

Relevant logs:

authd-pam: Failed to open PAM TTY: open ssh: no such file or directory

Failed sending message to pam:
System error: dbus: connection closed by user

authd successfully creates temporary identity:

Added temporary record for user
Using new UID 10000

SSH configuration:

usepam yes
kbdinteractiveauthentication yes

Expected:

Selecting provider 1 or 2 should continue authentication flow.

Actual:

All input is rejected with "Unsupported input".

### Steps to reproduce

Image

The issue is reproducible consistently (100% of the time).

Environment
Ubuntu Server 24.04 LTS
authd 0.6.4
authd-msentraid 0.4.0 (stable)
Previously tested with authd-msentraid 0.4.1 (candidate) with identical results
Microsoft Entra ID broker configured and registered
GroupMember.Read.All permission granted and admin consent applied
Reproduction steps

Install and configure authd and authd-msentraid on Ubuntu 24.04.

Configure Microsoft Entra ID broker with:

Tenant ID
Client ID
Microsoft Graph GroupMember.Read.All permission
Admin consent granted

### System information and logs

``

#### authd apt history
```

```

#### authd broker configuration
#### /etc/authd/brokers.d/msentraid.conf
```
# This section is used by authd to identify and communicate with the broker.
# It should not be edited.
[authd]
name = Microsoft Entra ID
brand_icon = /snap/authd-msentraid/current/broker_icon.png
dbus_name = com.ubuntu.authd.MSEntraID
dbus_object = /com/ubuntu/authd/MSEntraID
```

#### authd-msentraid configuration
```
[oidc]
issuer = https://login.microsoftonline.com//v2.0
client_id =

## Force remote authentication with the identity provider during login,
## even if a local method (e.g. local password) is used.
## This works by forcing a token refresh during login, which fails if the
## user does not have the necessary permissions in the identity provider.
##
## If set to false (the default), remote authentication with the identity
## provider only happens if there is a working internet connection and
## the provider is reachable during login.
##
## Important: Enabling this option prevents authd users from logging in
## if the identity provider is unreachable (e.g. due to network issues).
#force_provider_authentication = false

[msentraid]
## Enable automatic device registration with Microsoft Entra ID
## when a user logs in through this broker.
##
## If set to true, authd will attempt to register the local machine
## as a device in Entra ID upon successful login.
##
## If set to false (the default), device registration will be skipped.
#register_device = false

[users]
#ssh_allowed_suffixes_first_auth = @helloworld.com.au
ssh_allowed_suffixes_first_auth = *
allowed_users = ALL

## The directory where the home directories of new users are created.
## Existing users will keep their current home directory.
## The home directories are created in the format /
#home_base_dir = /home

## By default, SSH only allows logins from users that already exist on the
## system.
## New authd users (who have never logged in before) are *not* allowed to log
## in for the first time via SSH unless this option is configured.
##
## If configured, only users with a suffix in this list are allowed to
## authenticate for the first time directly through SSH.
## Note that this does not affect users that already authenticated for
## the first time and already exist on the system.
##
## Suffixes must be comma-separated (e.g., '@example.com,@example.org').
## To allow all suffixes, use a single asterisk ('*').
##
## Example:
## ssh_allowed_suffixes_first_auth = @example.com,@anotherexample.org
##
## Example (allow all):
## ssh_allowed_suffixes_first_auth = *
##
#ssh_allowed_suffixes_first_auth =

## 'allowed_users' specifies the users who are permitted to log in after
## successfully authenticating with the identity provider.
## Values are separated by commas. Supported values:
## - 'OWNER': Grants access to the user specified in the 'owner' option
## (see below). This is the default.
## - 'ALL': Grants access to all users who successfully authenticate
## with the identity provider.
## - : Grants access to specific additional users
## (e.g. user1@example.com).
## Example: allowed_users = OWNER,user1@example.com,admin@example.com
#allowed_users = OWNER

## 'owner' specifies the user assigned the owner role. This user is
## permitted to log in if 'OWNER' is included in the 'allowed_users'
## option.
##
## If this option is left unset, the first user to successfully log in
## via this broker will automatically be assigned the owner role. A
## drop-in configuration file will be created in broker.conf.d/ to set
## the 'owner' option.
##
## To disable automatic assignment, you can either:
## 1. Explicitly set this option to an empty value (e.g. owner = "")
## 2. Remove 'OWNER' from the 'allowed_users' option
##
## Example: owner = user2@example.com
#owner =

## A comma-separated list of local groups which authd users will be
## added to upon login.
## Example: extra_groups = users
#extra_groups =

## Like 'extra_groups', but only the user assigned the owner role
## (see 'owner' option) will be added to these groups.
## Example: owner_extra_groups = sudo,lpadmin
#owner_extra_groups =
```

#### authd-google configuration
```
cat: /var/snap/authd-google/current/broker.conf: No such file or directory
```

#### authd-oidc configuration
```
cat: /var/snap/authd-oidc/current/broker.conf: No such file or directory
```

### Double check your logs

- [x] I have redacted any sensitive information from the logs

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the failure with `ssh localhost -l user@domain.com`, then inspect the provider-selection flow alongside the reported authd-pam logs and `/etc/authd/brokers.d/msentraid.conf`. Verify the configured Microsoft Entra broker and SSH settings, and consider the issue complete when selecting `1` or `2` proceeds with authentication instead of returning `Unsupported input`.

Written by the indexing model from the issue text.

Assessment

Tech stack
azure, go, ubuntu
Domain
authentication, backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
50/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.