SteveSyfuhs / Kerberos.NET: L'installation de Kerberos est entièrement construite avec du code managé. ® mutuelle entreprise

Quels éléments jouent sur le tarif d’une fermeté professionnelle ?
Plusieurs critères vont avoir un impact sur le coût d’une assurance professionnelle, parmi quoi le danger potentiel que vous représentez pour l’assureur. Ainsi vont être pris en compte a l’intérieur du tarif :

la taille de l’entreprise et sa forme juridique. Ainsi, une société unipersonnelle et pourquoi pas un auto-entrepreneur bénéficieront d’un tarif réduit, car les risques à couvrir sont moindres.
le chiffre d’affaires de l’entreprise. En effet, un chiffre d’affaires important représente un risque supplémentaire que la compagnie d’assurance voltampère réfléchir sur ses tarifs
le secteur d’activité de l’entreprise. Une entreprise travaillant a l’intérieur du secteur des travaux est par contre exposée à des risques moins importants qu’une société du domaine du bâtiment ou bien de la chimie
le nombre de garanties et leur étendue. Plus elles seront nombreuses et couvrantes et plus le tarif sera important.
Combien paiera un auto-entrepreneur pour son sûreté professionnelle ?
Le coût de l’assurance pro pour un auto-entrepreneur varie en fonction du chiffre d’affaires, du secteur d’activité. Mais attention ! Selon métiers, plusieurs garanties sont obligatoires comme le de la garantie décennale bâtiment pour professionnels du BTP.

Ainsi un auto-entrepreneur pourra souscrire les garanties suivantes (montant minimal) :

responsabilité civile : 100 euros chez an
protection juridique : 100 euros selon an
complémentaire santé : 200 euros dans an
sûreté perte d’exploitation : 300 euros pendant an
multirisque pro : 400 euros chez an
garantie décennale bâtiment : 600 euros chez an

Quid du réduction de l’assurance pour d’autres pratique ?
Voici quelques fourchettes de prix pour des aisance professionnelles particuliers :

Pour une société individuelle, le chiffre d’affaires moyen, le secteur d’activité et le nombre de garanties souscrites auront un impact sur le prix de l’assurance professionnelle. Ainsi les tarifs aller de 100 à 1000 euros dans an
Pour une aisance profession libérale, en plus de l’activité exercée et garanties choisies, le taux le montant le pourcentage de collaborateurs et l’occupation d’un local professionnel pourront aussi jouer cotisations. Les prix moyens vont de 90 à 500 euros annuels
Pour une fermeté agricole, la taille de l’exploitation sera aussi prise en compte. Le coût moyen d’une persuasion couvrant aussi bien l’exploitation que le matos s’élève à approximativement 2000 euros dans an

Toute la bibliothèque Kerberos, entièrement construite avec du code géré sans (beaucoup) dépendances du système d'exploitation.


Paquet Nuget

Bibliothèque .NET intégrée pour travailler avec les messages Kerberos. Vous pouvez exécuter un client, héberger votre propre KDC ou simplement confirmer les tickets entrants. Il est conçu pour être le plus léger possible.

Consultez la balise Kerberos.NET pour plus d'informations lors de la mise à jour de documents ici.

Vous pouvez utiliser cette bibliothèque de deux manières. Vous devez d’abord télécharger le code et le créer localement. La seconde, meilleure option consiste simplement à utiliser nuget.

PM> Installez le paquet Kerberos.NET

Notez que le package Nuget actuel n’a pas encore de version v3. Cela permet de limiter l'impact sur les appelants lorsqu'ils sont en état alpha. Il y a aussi des modifications mineures mais fragiles quand il est converti en .NET Standard 2.1 et que la configuration de Framework est supprimée.

À propos des mises à jour des paquets Nuget

Les paquets Nuget seront généralement mis à jour pour refléter les modifications apportées à la bibliothèque parente. Consultez les notes de publication du package pour connaître les modifications spécifiques. Cependant, comme indiqué ci-dessus, la bibliothèque a été reconstruite et est en condition alpha.

Il y a trois façons d'utiliser cette bibliothèque.

Utilisation du client Kerberos

Le client est intentionnellement simple et ne dispose pas de toutes les fonctionnalités client complètes disponibles sur les autres plates-formes. Ce client est utile pour faciliter les tests et l’extension pour répondre à vos besoins.

var client = nouveau KerberosClient();

var kerbCred = nouveau KerberosPasswordCredential("utilisateur@domaine.com", "userP @ ssw0rd!")

attendre client.L'authenticité(kerbCred)

var billet = attendre client.GetServiceTicket("Hôte / appservice.corp.identityintervention.com")

Utiliser le serveur KDC

L'hébergement KDC est un peu plus compliqué car il doit être écouté sur un port particulier. Vous écoutez habituellement dans le port 88.

var port = 88;

var opportunités = nouveau ListenerOptions

    Écoute = nouveau IPEndPoint(Adresse IP.Commentaires, port),
    DefaultRealm = "corp.identityintervention.com".Le plus haut(),
    RealmLocator = nom de domaine => nouveau MyRealmService(nom de domaine)
;

var l'auditeur = nouveau KdcServiceListener(opportunités)

attendre l'auditeur.Commencer();

L’auditeur attendra jusqu’à listener.Stop () est appelé (ou éliminé).

Utiliser un authentificateur

L'authentification du ticket s'effectue en deux étapes. La première étape confirme l’exactitude du ticket par le biais de IKerberosValidator avec l'installation par défaut Seigneur de Kerbera. La deuxième étape consiste à rendre le billet utilisable Identité des réclamations, qui se produit KerberosAuthenticator.

Le moyen le plus simple de commencer est de créer un nouveau KerberosAuthenticator et des appels L'authenticité. Si vous devez ajuster votre comportement de conversion, vous pouvez l'ignorer. ConvertTicket (données DecryptedData) méthode.

var authentifiant = nouveau KerberosAuthenticator(nouveau Table de clés(Le cas.ReadAllBytes("exemple.key")));

var identité = authentifiant.L'authenticité("YIIHCAYGKwYBBQUCoIIG ...")

La confirmation.IsNotNull(identité)

var nom = identité.nom;

La confirmation.IsFalse(des cordes.IsNullOrWhitespace(nom));

Notez que le paramètre constructeur authentificateur est un Table de clés. Table de clés est un format couramment utilisé pour stocker les clés sur d’autres plateformes. Vous pouvez utiliser un fichier créé par un outil tel que ktpass, ou vous pouvez simplement passer un KerberosKey instantanément et cela aura le même effet.

Cette bibliothèque contient un décodeur de ticket de service optionnel. C'est facile à utiliser. Copiez simplement une copie cryptée de votre ticket Base64 dans le champ de texte de gauche. Si vous ne fournissez pas la clé, le message non chiffré sera déchiffré. Si vous fournissez une clé, il tentera de déchiffrer le message. Vous n'avez pas besoin de fournir la valeur de l'ordinateur hôte si le ticket a été chiffré à l'aide de RC4, mais vous aurez besoin de la valeur de l'ordinateur hôte si celui-ci est chiffré avec AES (pour obtenir du sel). Ou, si vous en avez un, vous pouvez également inclure un fichier keytab.

Voici un exemple de exemple de billet:

{
  "Demande": {
    "MechType": 
      "Mécanisme": "SPNEGO",
      "Oid": "1.3.6.1.5.5.2"
    
    
    
    ,
    "Demande de négociation": {
      "MechToken": 
        "Négocier une extension": vide,
        "ThisMech": 
          "Mécanisme": "Kerberos V5",
          "Oid": "1.2.840.113554.1.2.2"
        
        
        
        ,
        "InnerContextToken": 
          "ProtocolVersionNumber": 5,
          "Type de message": (
            "KRB_AP_REQ"
          
          
          
          ),
          "APOptions": (
            "REQUIS"
          
          
          
          ),
          "Ticket": 
            "TicketVersionNumber": 5,
            "Le royaume": "CORP.IDENTITYINTERVENTION.COM",
            "SName": 
              "Le royaume": "CORP.IDENTITYINTERVENTION.COM",
              "NomType": (
                "NT_SRV_INST"
              
              
              
              ),
              "Noms": (
                "principal / delegated.identityintervention.com"
              
              
              
              )
,
            "EncPart": 
              "EType": (
                "RC4_HMAC_NT"
              
              
              
              ),
              "KeyVersionNumber": 3,
              "Le chiffre": "... coupé ..."
            
            
            
            
,
          "Authentificateur": 
            "EType": (
              "RC4_HMAC_NT"
            
            
            
            ),
            "KeyVersionNumber": vide,
            "Le chiffre": "... coupé ..."
          
          
          
          
,
        "NtlmNegotiate": vide
      ,
      "MechTypes": (

          "Mécanisme": "L'héritage de Kerberos V5",
          "Oid": "1.2.840.48018.1.2.2"
        
        
        
        ,

          "Mécanisme": "Kerberos V5",
          "Oid": "1.2.840.113554.1.2.2"
        
        
        
        ,

          "Mécanisme": "NegoEx",
          "Oid": "1.3.6.1.4.1.311.2.2.30"
        
        
        
        ,

          "Mécanisme": "NTLM",
          "Oid": "1.3.6.1.4.1.311.2.2.10"
        
        
        
        
)
},
    "Demande": vide
  },
  "Décrypté": {
    "EType": (
      "RC4_HMAC_NT"
    
    
    
    ),
    "Authentificateur": 
      "Numéro de version": 5,
      "Le royaume": "CORP.IDENTITYINTERVENTION.COM",
      "Nom": 
        "Le royaume": "CORP.IDENTITYINTERVENTION.COM",
        "NomType": (
          "NT_ENTERPRISE"
        
        
        
        ),
        "Noms": (
          "test4u"
        
        
        
        )
,
      "Somme de contrôle": "oAUCAwCAA6EaBBgQAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA =",
      "CuSec": 73,
      "Temps CT": "2019-02-23T03: 26: 00 + 00: 00",
      "SubSessionKey": 
        "Type de clé": (
          "RC4_HMAC_NT"
        
        
        
        ),
        "RawKey": "xG8Kpugq38doJ1I911iMCw =="
      
      
      
      ,
      "Numéro de séquence": 2122637123,
      "La clé": "xG8Kpugq38doJ1I911iMCw ==",
      "Les permis": (

          "Type": (
            "AdIfRelevant"
          
          
          
          ),
          "Les permis": (

              "Type": (
                "AD_ETYPE_NEGOTIATION"
              
              
              
              ),
              "Types": (
(
                  "AES256_CTS_HMAC_SHA1_96"
                
                
                
                ),
(
                  "AES128_CTS_HMAC_SHA1_96"
                
                
                
                ),
(
                  "RC4_HMAC_NT"
                
                
                
                )
)
,

              "Type de restriction": 0,
              "Restriction": 
                "Drapeaux": (
                  "Plein"
                
                
                
                ),
                "TokenIntegrityLevel": (
                  "Modéré"
                
                
                
                ),
                "MachineId": "LkMHyrZTnvXuZfgAixO7o5JMZ1AXqiMsbEnsE2a2UsY ="
              
              
              
              ,
              "Type": (
                "KERB_AUTH_DATA_TOKEN_RESTRICTIONS"
              
              
              
              )
,

              "Type": (
                "KERB_LOCAL"
              
              
              
              ),
              "Valeur": "EINby2wBAACoCPQAAAAAAA =="
            
            
            
            ,

              "Type": (
                "KERB_AP_OPTIONS"
              
              
              
              ),
              "Des opportunités": (
                "CHANNEL_BINDING_SUPPORTED"
              
              
              
              )
,

              "Type": (
                "KERB_SERVICE_TARGET"
              
              
              
              ),
              "Nom du service": "host/deleched.identityintervention.com@CORP.IDENTITYINTERVENTION.COM"
            
            
            
            
)

)
,
    "Ticket": {
      "TicketFlags": (
        "EncryptedPreAuthentication",
        "Pré-approuvé",
        "Renouvelable",
        "Transmission"
      
      
      
      ),
      "La clé": 
        "Type de clé": (
          "RC4_HMAC_NT"
        
        
        
        ),
        "RawKey": "6ZBHsIubiNYuW / klY + IKhw =="
      
      
      
      ,
      "Crealm": "CORP.IDENTITYINTERVENTION.COM",
      "Nom": 
        "Le royaume": "CORP.IDENTITYINTERVENTION.COM",
        "NomType": (
          "NT_ENTERPRISE"
        
        
        
        ),
        "Noms": (
          "test4u"
        
        
        
        )
,
      "AuthTime": "2019-02-23T03: 25: 44 + 00: 00",
      "Heure de début": "2019-02-23T03: 26: 00 + 00: 00",
      "Heure de fin": "2019-02-23T03: 41: 00 + 00: 00",
      "Renouveler": "2019-03-02T03: 25: 44 + 00: 00",
      "Adresses principales": 0,
      "AuthorizationData": (
{
          "Type": (
            "AdIfRevent"
          
          
          
          ),
          "Les permis": (

              "Type": (
                "AD_WIN2K_PAC"
              
              
              
              ),
              "Certificat": 
                "Erreurs de décodage": (),
                "Version": 0,
                "LogonInfo": 
                  "Heure de connexion": "1601-01-01T00: 00: 00 + 00: 00",
                  "Heure de déconnexion": "0001-01-01T00: 00: 00 + 00: 00",
                  "KickOffTime": "0001-01-01T00: 00: 00 + 00: 00",
                  "PwdLastChangeTime": "1601-01-01T00: 05: 11.1506395 + 00: 00",
                  "PwdCanChangeTime": "1601-01-01T00: 06: 22.30801 + 00: 00",
                  "PwdMustChangeTime": "1601-01-01T00: 04: 53.283094 + 00: 00",
                  "LogonCount": 0,
                  "BadPasswordCount": 0,
                  "Nom d'utilisateur": "test4u",
                  "UserDisplayName": "Test S4U",
                  "LogonScript": "",
                  "ProfilePath": "",
                  "AccueilRépertoire": "",
                  "HomeDrive": "",
                  "Le nom du serveur": "DC01",
                  "Le nom de domaine": "corp",
                  "UserSid": 
                    "Les attributs": (
                      "0"
                    
                    
                    
                    ),
                    "Valeur": "S-1-5-21-1450222856-612051446-931472078-1107"
                  
                  
                  
                  ,
                  "GroupSid": 
                    "Les attributs": (
                      "0"
                    
                    
                    
                    ),
                    "Valeur": "S-1-5-21-1450222856-612051446-931472078-513"
                  
                  
                  
                  ,
                  "GroupSids": (

                      "Les attributs": (
                        "SE_GROUP_MANDATORY",
                        "SE_GROUP_ENABLED_BY_DEFAULT",
                        "SE_GROUP_ENABLED"
                      
                      
                      
                      ),
                      "Valeur": "S-1-5-21-1450222856-612051446-931472078-513"
                    
                    
                    
                    
),
                  "ExtraSids": (

                      "Les attributs": (
                        "SE_GROUP_MANDATORY",
                        "SE_GROUP_ENABLED_BY_DEFAULT",
                        "SE_GROUP_ENABLED"
                      
                      
                      
                      ),
                      "Valeur": "S-1-18-2"
                    
                    
                    
                    
),
                  "UserAccountControl": (
                    "ADS_UF_LOCKOUT",
                    "ADS_UF_MNS_LOGON_ACCOUNT"
                  
                  
                  
                  ),
                  "UserFlags": (
                    "LOGON_EXTRA_SIDS"
                  
                  
                  
                  ),
                  "FailedILogonCount": 0,
                  "LastFailedILogon": "1601-01-01T00: 00: 00 + 00: 00",
                  "Dernière réussiteLogon": "1601-01-01T00: 00: 00 + 00: 00",
                  "SubAuthStatus": 0,
                  "ResourceDomainSid": vide,
                  "Groupes de ressources": vide,
                  "DomainSid": 
                    "Les attributs": (
                      "0"
                    
                    
                    
                    ),
                    "Valeur": "S-1-5-21-1450222856-612051446-931472078"
                  
                  
                  
                  
,
                "Signature du serveur": 
                  "Type": (
                    "KERB_CHECKSUM_HMAC_MD5"
                  
                  
                  
                  ),
                  "La signature": "HeigjZh19Odn + 5L76bHJwA ==",
                  "RODCIdentifier": 0
                ,
                "CredentialType": vide,
                "KdcSignature": 
                  "Type": (
                    "HMAC_SHA1_96_AES256"
                  
                  
                  
                  ),
                  "La signature": "G4Ph1DqTxZPuhlQo",
                  "RODCIdentifier": 0
                ,
                "Demandes client": vide,
                "DeviceClaims": vide,
                "Informations client": 
                  "ClientId": "1601-01-01T00: 03: 20.5972775 + 00: 00",
                  "nom": "test4u"
                
                
                
                ,
                "UpnDomainInformation": 
                  "Upn": "test4u@corp.identityintervention.com",
                  "Domaine": "CORP.IDENTITYINTERVENTION.COM",
                  "Drapeaux": (
                    "0"
                  
                  
                  
                  )
,
                "DélégationInformation": 
                  "S4U2ProxyTarget": "principal / delegated.identityintervention.com",
                  "S4UTransitedServices": (
                    "appsvc@CORP.IDENTITYINTERVENTION.COM"
                  
                  
                  
                  )



)
},

          "Type": (
            "AdIfRevent"
          
          
          
          ),
          "Les permis": (

              "Type de restriction": 0,
              "Restriction": 
                "Drapeaux": (
                  "Plein"
                
                
                
                ),
                "TokenIntegrityLevel": (
                  "Modéré"
                
                
                
                ),
                "MachineId": "LkMHyrZTnvXuZfgAixO7o5JMZ1AXqiMsbEnsE2a2UsY ="
              
              
              
              ,
              "Type": (
                "KERB_AUTH_DATA_TOKEN_RESTRICTIONS"
              
              
              
              )
,

              "Type": (
                "KERB_LOCAL"
              
              
              
              ),
              "Valeur": "EINby2wBAACYCPQAAAAAAA =="
            
            
            
            
)

),
      "Clé de chiffrement": "6ZBHsIubiNYuW / klY + IKhw ==",
      "Transit": (

          "Type": (
            "DomainX500Compress"
          
          
          
          ),
          "Le contenu": ""
        
        
        
        
)
},
    "L'attelle": "00:05:00"
  
  
  
  },
  "Table de clés": 
    "FileVersion": 2,
    "KerberosVersion": 5,
    "Records": (

        "Type de cryptage": vide,
        "Longueur": 0,
        "Horodatage": "0001-01-01T00: 00: 00 + 00: 00",
        "Version": 0,
        "L'hôte": vide,
        "PasswordBytes": "UABAAHMAcwB3ADAAcgBkACEA",
        "La clé": vide
      
)

}

.NET Core

Hé, ça marche! Ajoutez simplement le paquet de nuget en tant que lien et c'est parti.

Pour plus d'informations

Création de SPN Kerberos dans Active Directory

Active Directory requiert une identité qui correspond au domaine auquel la clé de passe est envoyée. Cette identité peut être n'importe quel objet utilisateur ou ordinateur dans Active Directory, mais doit être configurée correctement. Cela signifie qu'il a besoin d'un nom de service principal (SPN). Ici, vous trouverez des instructions sur la configuration d’un utilisateur test.

Applications Active Directory

Active Directory prend en charge les applications à partir de 2012. Serveur. À ce moment-là, vous ne pouviez accéder qu'aux applications utilisant les principes Windows ou ADFS Dark Magic. Kerberos.NET prend désormais en charge l'analyse des revendications sur les tickets Kerberos. Consultez le guide des réclamations pour plus d'informations sur cette configuration.

Génération de fichiers KeyTable (keytab)

Kerberos.NET prend en charge le format de fichier KeyTable (keytab) pour transmettre les clés utilisées pour décrypter et valider les tickets Kerberos. Le format de fichier Keytab est un format couramment utilisé par de nombreuses plateformes pour stocker les clés. Vous pouvez générer ces fichiers sous Windows ktpass un outil de ligne de commande faisant partie du package des outils d'administration de serveur distant (RSAT). Vous pouvez installer serveur via PowerShell (ou via la boîte de dialogue Ajouter des composants Windows):

À partir de là, vous pouvez générer le fichier keytab en exécutant la commande suivante:

ktpass / princ HTTP / test.identityintervention.com@IDENTITIYINTERVENTION.COM / mapuser IDENTITYINTER  server01 $ / pass P@ssw0rd! / out sample.keytab / crypto all / PTYPE KRB5_NT_SRV_INST / mapop ensemble

Le paramètre le prince utilisé pour spécifier le nom d'hôte en cours de génération et mapuser qui est utilisé pour l'associer à un utilisateur Active Directory. crypto-monnaie le paramètre spécifie quels algorithmes doivent générer les enregistrements.

Soutien AES

Les tickets AES sont pris en charge seuls. Aucun travail supplémentaire requis!

Enregistrement de décrypteurs personnalisés

Vous pouvez ajouter votre support à d’autres algorithmes comme DES (je ne sais pas pourquoi vous le voudriez, mais …) en associant le type de cryptage à Func <>, qui exécute de nouveaux décodeurs. En outre, rien ne vous empêche de faire ce processus si vous le souhaitez.

KerberosRequest.Inscription décorateur(
   Type de cryptage.DES_CBC_MD5,
(jeton) => nouveau DESMD5DecryptedData(jeton)
)

La détection de répétition intégrée utilise un MemoryCache stocker temporairement des liens vers des paquets de billets. Ces liens seront supprimés à l'expiration du billet. Le processus de détection se produit immédiatement après le déchiffrement, dès que le numéro de séquence du périphérique d'authentification est présent.

Notez que la logique de détection intégrée ne fonctionne pas correctement lorsqu'un programme est groupé car le cache n'est pas partagé entre les ordinateurs. L'installation intégrée utilise un service de mémoire, il n'est donc pas partagé.

Vous devrez créer un cache qui sera partagé sur toutes les machines pour qu'il fonctionne correctement dans un environnement en cluster. Cela a été grandement simplifié avec les nouveaux services d'injection de dépendance .NET Core. Il suffit de vous inscrire IDStributedCache la mise en œuvre. Vous trouverez plus d'informations à ce sujet dans la documentation de Mirosoft.

Pour utiliser votre propre détection de relecture, installez-la simplement. ITicketReplayValidator interface et le passer Seigneur de Kerbera constructeur.

Il y a des exemples!

  • KerbCrypto est exécuté à travers 6 formats de jeton pris en charge.
    • rc4-kerberos-date
    • rc4-spnego-data
    • Aes128-kerberos-data
    • Aes128-spnego-data
    • aes256-kerberos-date
    • Aes256-spnego-data
  • KerbTester Un outil de ligne de commande utilisé pour tester et télécharger de vrais tickets.
  • KerberosMiddlewareEndToEndSample est un exemple de bout en bout qui montre comment le serveur appelle pour négocier et la réponse du navigateur émulé.
  • KerberosMiddlewareSample Exemple de migration / rejet de middleware simple qui décode un ticket, le cas échéant, mais ne demande jamais de négociation.
  • KerberosWebSample IIS héberge un exemple de projet Web qui vous invite à négocier et à approuver tous les tickets entrants à partir de votre navigateur.

Ce projet est sous licence MIT. Voir le fichier de licence pour plus d'informations. Voir également le fichier de notification pour plus d'informations sur les licences de projet dont vous dépendez.

SteveSyfuhs / Kerberos.NET: L'installation de Kerberos est entièrement construite avec du code managé. ® mutuelle entreprise
4.9 (98%) 32 votes