Freigeben über


Gewusst wie: Erstellen eines benutzerdefinierten Anspruchs

Die Identitätsmodellinfrastruktur in Windows Communication Foundation (WCF) stellt mehrere integrierte Anspruchstypen und -rechte mit den Hilfsfunktionen zum Erstellen von Claim-Instanzen mit diesen Typen und Rechten bereit. Diese integrierten Ansprüche sind so konzipiert, dass sie Informationen modellieren, die sich in von WCF standardmäßig unterstützten Clientanmeldeinformationstypen befinden. In vielen Fällen sind die integrierten Ansprüche ausreichend; für einige Anwendungen sind jedoch unter Umständen benutzerdefinierte Ansprüche erforderlich. Ein Anspruch besteht aus dem Anspruchstyp, der Ressource, für die der Anspruch gilt, und dem Recht, das über diese Ressource gewährt wird. In diesem Thema wird beschrieben, wie Sie einen benutzerdefinierten Anspruch erstellen.

So erstellen Sie einen benutzerdefinierten Anspruch, der auf einem primitiven Datentyp basiert

  1. Erstellen Sie einen benutzerdefinierten Anspruch, indem Sie den Anspruchstyp, den Ressourcenwert und das Recht dem Claim-Konstruktor übergeben.

    1. Legen Sie einen eindeutigen Wert für den Anspruchstyp fest.
      Der Anspruchstyp ist ein eindeutiger Zeichenfolgenbezeichner. Der Ersteller des benutzerdefinierten Anspruchs ist dafür verantwortlich, dass der für den Anspruchstyp verwendete Zeichenfolgenbezeichner eindeutig ist. Eine Liste der von WCF definierten Anspruchstypen finden Sie in der ClaimTypes-Klasse.
    2. Wählen Sie den primitiven Datentyp und den Wert für die Ressource aus.
      Eine Ressource ist ein Objekt. Der CLR-Typ der Ressource kann primitiv sein, z. B. String oder Int32, oder ein beliebiger serialisierbarer Typ. Der CLR-Typ der Ressource muss serialisierbar sein, da Ansprüche von WCF an verschiedenen Punkten serialisiert werden. Primitive Typen sind serialisierbar.
    3. Wählen Sie ein von WCF definiertes Recht oder einen eindeutigen Wert für ein benutzerdefiniertes Recht aus.
      Ein Recht ist ein eindeutiger Zeichenfolgenbezeichner. Die von WCF definierten Rechte werden in der Rights-Klasse definiert.
      Der Ersteller des benutzerdefinierten Anspruchs ist dafür verantwortlich, dass der für das Recht verwendete Zeichenfolgenbezeichner eindeutig ist.
      Im folgenden Codebeispiel wird ein benutzerdefinierter Anspruch mit einem Anspruchstyp http://example.org/claims/simplecustomclaim für eine Ressource mit der Bezeichnung Driver's License und mit dem PossessProperty-Recht erstellt.

So erstellen Sie einen benutzerdefinierten Anspruch, der auf einem nicht primitiven Datentyp basiert

  1. Erstellen Sie einen benutzerdefinierten Anspruch, indem Sie den Anspruchstyp, den Ressourcenwert und das Recht dem Claim-Konstruktor übergeben.

    1. Legen Sie einen eindeutigen Wert für den Anspruchstyp fest.
      Der Anspruchstyp ist ein eindeutiger Zeichenfolgenbezeichner. Der Ersteller des benutzerdefinierten Anspruchs ist dafür verantwortlich, dass der für den Anspruchstyp verwendete Zeichenfolgenbezeichner eindeutig ist. Eine Liste der von WCF definierten Anspruchstypen finden Sie in der ClaimTypes-Klasse.
    2. Wählen oder definieren Sie einen serialisierbaren nicht primitiven Typ für die Ressource.
      Eine Ressource ist ein Objekt. Der CLR-Typ der Ressource muss serialisierbar sein, da Ansprüche von WCF an verschiedenen Punkten serialisiert werden. Primitive Typen sind bereits serialisierbar.
      Wenden Sie das DataContractAttribute auf die Klasse an, wenn ein neuer Typ definiert wird. Wenden Sie auch das DataMemberAttribute-Attribut auf alle Member des neuen Typs an, die als Teil des Anspruchs serialisiert werden müssen.
      Im folgenden Codebeispiel wird ein benutzerdefinierter Ressourcetyp mit der Bezeichnung MyResourceType definiert.
    3. Wählen Sie ein von WCF definiertes Recht oder einen eindeutigen Wert für ein benutzerdefiniertes Recht aus.
      Ein Recht ist ein eindeutiger Zeichenfolgenbezeichner. Die von WCF definierten Rechte werden in der Rights-Klasse definiert.
      Der Ersteller des benutzerdefinierten Anspruchs ist dafür verantwortlich, dass der für das Recht verwendete Zeichenfolgenbezeichner eindeutig ist.
      Im folgenden Codebeispiel wird ein benutzerdefinierter Anspruch mit einem Anspruchstyp http://example.org/claims/complexcustomclaim, einem benutzerdefinierten Ressourcentyp MyResourceType und mit dem PossessProperty-Recht erstellt.

Beispiel

Das folgende Codebeispiel veranschaulicht, wie ein benutzerdefinierter Anspruch mit einem primitiven Ressourcentyp und ein benutzerdefinierter Anspruch mit einem nicht primitiven Ressourcentyp erstellt wird.

Siehe auch

Referenz

Claim
Rights
ClaimTypes
DataContractAttribute
DataMemberAttribute

Konzepte

Verwalten von Ansprüchen und Autorisierung mit dem Identitätsmodell
Verwalten von Ansprüchen und Autorisierung mit dem Identitätsmodell