Mit IdentityServer über OpenID Connect verbinden

FoxIDs kann mit einem IdentityServer über OpenID Connect verbunden werden und damit Endbenutzer in einem IdentityServer authentifizieren.

Es ist möglich, einen IdentityServer client anzubinden und claims aus dem ID token zu lesen oder einen komplexeren Fall zu wählen, in dem claims aus dem access token gelesen werden.

Das sample IdentityServerOidcOpSample ist in FoxIDs test-corp mit dem Authentifizierungsmethoden Namen identityserver_oidc_op_sample konfiguriert. Sie können den Login (Benutzername alice und Passwort alice) mit den IdentityServerOidcOpSample und AspNetCoreOidcAuthorizationCodeSample samples testen, indem Sie OIDC IdentityServer Log in in der AspNetCoreOidcAuthorizationCodeSample Applikation anklicken. Das IdentityServerOidcOpSample sample ist mit Implicit Flow konfiguriert, um lokale Tests zu ermöglichen, verwenden Sie in der Produktion Authorization Code Flow.

Sehen Sie sich die IdentityServer sample Konfiguration in FoxIDs Control an: https://control.foxids.com/test-corp Erhalten Sie read Zugriff mit dem Benutzer reader@foxids.com und dem Passwort gEh#V6kSw und wählen Sie anschließend die Production Umgebung und die Registerkarte Authentication.

IdentityServer konfigurieren

Dieses Kapitel beschreibt, wie Sie eine Verbindung mit OpenID Connect Authorization Code flow und PKCE konfigurieren, was der empfohlene OpenID Connect flow ist.

1 - Beginnen Sie mit der Erstellung einer OpenID Connect Authentifizierungsmethode in FoxIDs Control Client

  1. Fügen Sie den Namen hinzu

Redirect URLs lesen

Es ist nun möglich, Redirect URL und Post logout redirect URL zu lesen.

2 - Gehen Sie dann zur IdentityServer Konfiguration und erstellen Sie den client

yield return new Client
{
    ClientId = "some_identityserver_app",

    AllowedGrantTypes = GrantTypes.Code,
    RequirePkce = true,
    ClientSecrets =
    {
        new Secret("BpCbINKwxELM ... eVpMClM84Rr0".Sha256())
    },

    AlwaysIncludeUserClaimsInIdToken = true,

    RedirectUris = { "https://foxids.com/test-corp/-/(some_identityserver_app)/oauth/authorizationresponse" },
    PostLogoutRedirectUris = { "https://foxids.com/test-corp/-/(some_identityserver_app)/oauth/endsessionresponse" },

    AllowedScopes = new List<string>
    {
        IdentityServerConstants.StandardScopes.OpenId,
        IdentityServerConstants.StandardScopes.Profile,
        IdentityServerConstants.StandardScopes.Email,
    }
};

Code aus der IdentityServerOidcOpSample sample Konfiguration.

3 - Gehen Sie zurück zur FoxIDs Authentifizierungsmethode in FoxIDs Control Client

  1. Fügen Sie die IdentityServer authority hinzu
  2. Fügen Sie profile und email scopes hinzu (mögliche andere oder weitere scopes)
  3. Fügen Sie den client secret Wert des IdentityServer client als client secret hinzu
  4. Wählen Sie show advanced
  5. Wählen Sie use claims from ID token
  6. Fügen Sie die claims hinzu, die von der Authentifizierungsmethode an die Applikationsregistrierungen übertragen werden. Z.B. email, email_verified, name, given_name, family_name, role und ggf. access_token claim, um das IdentityServer access token zu übertragen
  7. Klicken Sie create

Das war's.

Die neue Authentifizierungsmethode kann nun als zulässige Authentifizierungsmethode in einer Applikationsregistrierung ausgewählt werden. Die Applikationsregistrierung kann die claims aus der Authentifizierungsmethode lesen. Es ist möglich, den access_token claim hinzuzufügen, um das IdentityServer access token als claim im ausgegebenen access token zu inkludieren.

Claims aus access token lesen

Wenn Sie claims aus dem access token lesen möchten, müssen Sie eine API resource und API scope hinzufügen. Und den client das neue scope verwenden lassen.

1 - In der IdentityServer Konfiguration

public IEnumerable<ApiResource> GetApiResources()
{
    yield return new ApiResource("some.api", "Some API")
    {
        UserClaims = new[] { "email", "email_verified", "family_name", "given_name", "name", "role" },

        Scopes = new List<string>
        {
            "some.api.access"
        }
    };
}

public IEnumerable<ApiScope> GetApiScopes()
{
    yield return new ApiScope("some.api.access", "Some API scope");
}

Sie können AlwaysIncludeUserClaimsInIdToken = true vom client entfernen.

Code aus der IdentityServerOidcOpSample sample Konfiguration.

2 - Gehen Sie dann zu FoxIDs Control Client

  1. Fügen Sie das API scope some.api.access als scope in den FoxIDs Authentifizierungsmethoden client hinzu
  2. Lesen Sie claims aus access token, indem Sie use claims from ID token nicht auswählen

Ihre Privatsphäre

Wir verwenden Cookies, um Ihre Erfahrung auf unseren Websites zu verbessern. Klicken Sie auf 'Alle Cookies akzeptieren', um der Verwendung von Cookies zuzustimmen. Um nicht notwendige Cookies abzulehnen, klicken Sie auf 'Nur notwendige Cookies'.

Weitere Informationen finden Sie in unserer Datenschutzerklärung