Megosztás a következőn keresztül:


Útmutató: Egyéni jogcím létrehozása

A Windows Communication Foundation (WCF) identitásmodell-infrastruktúrája beépített jogcímtípusokat és jogosultságokat biztosít a segédfüggvényekkel az ilyen típusú és jogosultságú példányok létrehozásához Claim . Ezek a beépített jogcímek a WCF által alapértelmezés szerint támogatott ügyfél-hitelesítő adatokban található információk modellezésére szolgálnak. A beépített jogcímek sok esetben elegendőek; egyes alkalmazások azonban egyéni jogcímeket igényelhetnek. A jogcímek a jogcím típusából, az erőforrásból, amelyre a jogcím vonatkozik, és az adott erőforrásra érvényesített jogból állnak. Ez a témakör bemutatja, hogyan hozhat létre egyéni jogcímet.

Primitív adattípuson alapuló egyéni jogcím létrehozása

  1. Egyéni jogcím létrehozása a jogcímtípus, az erőforrásérték és a Claim(String, Object, String) jogosultság konstruktornak való átadásával.

    1. Döntse el a jogcímtípus egyedi értékét.

      A jogcím típusa egy egyedi sztringazonosító. Az egyéni jogcímtervező feladata annak biztosítása, hogy a jogcímtípushoz használt sztringazonosító egyedi legyen. A WCF által definiált jogcímtípusok listáját az ClaimTypes osztályban találja.

    2. Válassza ki az erőforrás primitív adattípusát és értékét.

      Az erőforrás egy objektum. Az erőforrás CLR-típusa lehet primitív, például String vagy Int32, vagy bármilyen szerializálható típus. Az erőforrás CLR-típusának szerializálhatónak kell lennie, mivel a jogcímeket a WCF különböző pontokon szerializálja. A primitív típusok szerializálhatók.

    3. Válasszon egy, a WCF által definiált jogot, vagy egy egyéni jog egyedi értékét.

      A jobb oldali érték egy egyedi sztringazonosító. A WCF által meghatározott jogosultságok az Rights osztályban vannak definiálva.

      Az egyéni jogcímtervező feladata annak biztosítása, hogy a joghoz használt sztringazonosító egyedi legyen.

      Az alábbi példakód egy egyéni jogcímet hoz létre egy jogcímtípussal http://example.org/claims/simplecustomclaim, egy elnevezett Driver's Licenseerőforráshoz, és jobbra PossessProperty .

    // Create claim with custom claim type and primitive resource
    Claim c1 = new Claim ( "http://example.org/claims/simplecustomclaim", "Driver's License", Rights.PossessProperty);
    
    ' Create claim with custom claim type and primitive resource
    Dim c1 As New Claim("http://example.org/claims/simplecustomclaim", "Driver's License", Rights.PossessProperty)
    

Nem primitív adattípuson alapuló egyéni jogcím létrehozása

  1. Egyéni jogcím létrehozása a jogcímtípus, az erőforrásérték és a Claim(String, Object, String) jogosultság konstruktornak való átadásával.

    1. Döntse el a jogcímtípus egyedi értékét.

      A jogcím típusa egy egyedi sztringazonosító. Az egyéni jogcímtervező feladata annak biztosítása, hogy a jogcímtípushoz használt sztringazonosító egyedi legyen. A WCF által definiált jogcímtípusok listáját az ClaimTypes osztályban találja.

    2. Az erőforrás szerializálható nem primitív típusának kiválasztása vagy definiálása.

      Az erőforrás egy objektum. Az erőforrás CLR-típusának szerializálhatónak kell lennie, mivel a jogcímeket a WCF különböző pontokon szerializálja. A primitív típusok már szerializálhatók.

      Új típus definiálásakor alkalmazza az DataContractAttribute osztályra. Alkalmazza az DataMemberAttribute attribútumot az új típus minden olyan tagjára, amelyet szerializálni kell a jogcím részeként.

      Az alábbi példakód egy egyéni erőforrástípust MyResourceTypehatároz meg.

      [DataContract(Name="MyResource", Namespace="http://example.org/resources")]
      public sealed class MyResourceType
      {
        // private members
        private string text;
        private int number;
      
        // Constructors
        public MyResourceType()
        {
        }
      
        public MyResourceType(string text, int number )
        {
          this.text = text;
          this.number = number;
        }
      
        // Public properties
        [DataMember]
        public string Text { get { return this.text; }  set { this.text = value; } }
        [DataMember]
        public int Number { get { return this.number; } set { this.number = value; } }
      }
      
      <DataContract(Name:="MyResource", [Namespace]:="http://example.org/resources")> _
      NotInheritable Public Class MyResourceType
          ' private members
          Private text_value As String
          Private number_value As Integer
      
      
          ' Constructors
          Public Sub New()
      
          End Sub
      
      
          Public Sub New(ByVal text As String, ByVal number As Integer)
              Me.text_value = text
              Me.number = number
      
          End Sub
      
          ' Public properties
      
          <DataMember()> _
          Public Property Text() As String
              Get
                  Return Me.text_value
              End Get
              Set
                  Me.text_value = value
              End Set
          End Property
      
          <DataMember()> _
          Public Property Number() As Integer
              Get
                  Return Me.number_value
              End Get
              Set
                  Me.number_value = value
              End Set
          End Property
      End Class
      
    3. Válasszon egy, a WCF által definiált jogot, vagy egy egyéni jog egyedi értékét.

      A jobb oldali érték egy egyedi sztringazonosító. A WCF által meghatározott jogosultságok az Rights osztályban vannak definiálva.

      Az egyéni jogcímtervező feladata annak biztosítása, hogy a joghoz használt sztringazonosító egyedi legyen.

      Az alábbi példakód egy egyéni jogcímet hoz létre egy jogcímtípussal http://example.org/claims/complexcustomclaim, egy egyéni erőforrástípussal MyResourceTypeés egy PossessProperty jobb gombbal.

      // Create claim with custom claim type and structured resource type
      Claim c2 = new Claim ( "http://example.org/claims/complexcustomclaim", new MyResourceType ( "Martin", 38 ), Rights.PossessProperty);
      
      ' Create claim with custom claim type and structured resource type
      Dim c2 As New Claim("http://example.org/claims/complexcustomclaim", New MyResourceType("Martin", 38), Rights.PossessProperty)
      

Példa

Az alábbi példakód bemutatja, hogyan hozhat létre egyéni jogcímet primitív erőforrástípussal és nem primitív erőforrástípussal rendelkező egyéni jogcímet.

using System;
using System.IdentityModel.Claims;
using System.Runtime.Serialization;

namespace Samples
{
  [DataContract(Name="MyResource", Namespace="http://example.org/resources")]
  public sealed class MyResourceType
  {
    // private members
    private string text;
    private int number;

    // Constructors
    public MyResourceType()
    {
    }

    public MyResourceType(string text, int number )
    {
      this.text = text;
      this.number = number;
    }

    // Public properties
    [DataMember]
    public string Text { get { return this.text; }  set { this.text = value; } }
    [DataMember]
    public int Number { get { return this.number; } set { this.number = value; } }
  }

  class Program
  {
    public static void Main()
    {
      // Create claim with custom claim type and primitive resource
      Claim c1 = new Claim ( "http://example.org/claims/simplecustomclaim", "Driver's License", Rights.PossessProperty);
      // Create claim with custom claim type and structured resource type
      Claim c2 = new Claim ( "http://example.org/claims/complexcustomclaim", new MyResourceType ( "Martin", 38 ), Rights.PossessProperty);

      // Do something with claims
    }
  }
}
Imports System.IdentityModel.Claims
Imports System.Runtime.Serialization
Imports System.Security.Permissions



<DataContract(Name:="MyResource", [Namespace]:="http://example.org/resources")> _
NotInheritable Public Class MyResourceType
    ' private members
    Private text_value As String
    Private number_value As Integer


    ' Constructors
    Public Sub New()

    End Sub


    Public Sub New(ByVal text As String, ByVal number As Integer)
        Me.text_value = text
        Me.number = number

    End Sub

    ' Public properties

    <DataMember()> _
    Public Property Text() As String
        Get
            Return Me.text_value
        End Get
        Set
            Me.text_value = value
        End Set
    End Property

    <DataMember()> _
    Public Property Number() As Integer
        Get
            Return Me.number_value
        End Get
        Set
            Me.number_value = value
        End Set
    End Property
End Class

Class Program

    Public Shared Sub Main()
        ' Create claim with custom claim type and primitive resource
        Dim c1 As New Claim("http://example.org/claims/simplecustomclaim", "Driver's License", Rights.PossessProperty)
        ' Create claim with custom claim type and structured resource type
        Dim c2 As New Claim("http://example.org/claims/complexcustomclaim", New MyResourceType("Martin", 38), Rights.PossessProperty)
    End Sub
End Class
' Do something with claims

Lásd még