

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Bewährte Methoden für Mehrmandantenfähigkeit mit benutzerdefiniertem Umfang
<a name="scope-based-multi-tenancy"></a>

Amazon Cognito unterstützt benutzerdefinierte OAuth 2.0-Bereiche für [Ressourcenserver](cognito-user-pools-define-resource-servers.md). Sie können die Mehrmandantenfähigkeit von App-Clients in Benutzerpools für machine-to-machine (M2M-) Autorisierungsmodelle mit benutzerdefinierten Bereichen implementieren. Die bereichsbasierte Mehrmandantenfähigkeit reduziert den Aufwand für die Implementierung von M2M-Multi-Tenancy, indem der Zugriff in Ihrem App-Client oder Ihrer Anwendungskonfiguration definiert wird.

 Das folgende Diagramm zeigt eine Option für Mehrmandantenfähigkeit mit benutzerdefiniertem Umfang. Es zeigt jeden Mandanten mit einem dedizierten App-Client, der Zugriff auf relevante Bereiche in einem Benutzerpool hat.

![\[Ein Diagramm, das den Ablauf benutzerdefinierter Bereiche in einer Mehrmandantenarchitektur veranschaulicht.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/multi-tenancy-custom-scope.png)


**Wann sollte eine Mehrmandantenfähigkeit mit benutzerdefiniertem Geltungsbereich implementiert werden**  
 Wenn Sie die M2M-Autorisierung mit Kundenanmeldedaten in einem vertraulichen Client verwenden. Es hat sich bewährt, Ressourcenserver zu erstellen, die ausschließlich für einen App-Client bestimmt sind. *Mehrmandantenfähigkeit mit benutzerdefiniertem Umfang kann *anforderungs- oder clientabhängig* sein.*

**Abhängig von der Anfrage**  
 Implementieren Sie die Anwendungslogik, um nur die Bereiche anzufordern, die den Anforderungen Ihres Mandanten entsprechen. Beispielsweise kann ein App-Client Lese- und Schreibzugriff auf API A und API B gewähren, aber Mandantenanwendung A fordert nur den Lesebereich für API A und den Bereich an, der die Mieterschaft angibt. Dieses Modell ermöglicht komplexere Kombinationen von gemeinsam genutzten Bereichen zwischen Mandanten.

**Abhängig vom Kunden**  
 Fordern Sie in Ihren Autorisierungsanfragen alle Bereiche an, die einem App-Client zugewiesen sind. Lassen Sie dazu den `scope` Anforderungsparameter in Ihrer Anfrage an die weg. [Token-Endpunkt](token-endpoint.md) Dieses Modell ermöglicht es App-Clients, die Zugriffsindikatoren zu speichern, die Sie Ihren benutzerdefinierten Bereichen hinzufügen möchten.

 In beiden Fällen erhalten Ihre Anwendungen Zugriffstoken mit Bereichen, die ihre Rechte für Datenquellen angeben, von denen sie abhängig sind. Bereiche können Ihrer Anwendung auch andere Informationen bieten:
+ Benennen Sie das Mietverhältnis
+ Tragen Sie zur Protokollierung von Anfragen bei
+ Geben Sie an APIs , dass die Anwendung für Abfragen autorisiert ist
+ Informieren Sie über die ersten Checks für aktive Kunden.

**Grad des Aufwands**  
 Ein kundenspezifischer Mehrmandantenbetrieb erfordert je nach Umfang Ihrer Anwendung einen unterschiedlichen Aufwand. Sie müssen eine Anwendungslogik entwickeln, die es Ihren Anwendungen ermöglicht, Zugriffstoken zu analysieren und die entsprechenden API-Anfragen zu stellen.

 Ein Ressourcenserverbereich hat beispielsweise das Format. `[resource server identifier]/[name]` Es ist unwahrscheinlich, dass die ID des Ressourcenservers für die Autorisierungsentscheidung aus dem Mandantenbereich relevant ist, weshalb der Bereichsname konsistent analysiert werden muss.

## Beispiel für eine Ressource
<a name="scope-based-multi-tenancy-example"></a>

 Die folgende AWS CloudFormation Vorlage erstellt einen Benutzerpool für Mehrmandantenfähigkeit in benutzerdefiniertem Umfang mit einem Ressourcenserver und einem App-Client.

```
AWSTemplateFormatVersion: "2010-09-09"
Description: A sample template illustrating scope-based multi-tenancy
Resources:
  MyUserPool:
    Type: "AWS::Cognito::UserPool"
  MyUserPoolDomain:
    Type: AWS::Cognito::UserPoolDomain
    Properties:
      UserPoolId: !Ref MyUserPool
      # Note that the value for "Domain" must be unique across all of AWS.
      # In production, you may want to consider using a custom domain.
      # See: https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-add-custom-domain.html#cognito-user-pools-add-custom-domain-adding
      Domain: !Sub "example-userpool-domain-${AWS::AccountId}"
  MyUserPoolResourceServer:
    Type: "AWS::Cognito::UserPoolResourceServer"
    Properties:
      Identifier: resource1
      Name: resource1
      Scopes:
        - ScopeDescription: Read-only access
          ScopeName: readScope
      UserPoolId: !Ref MyUserPool
  MyUserPoolTenantBatch1ResourceServer:
    Type: "AWS::Cognito::UserPoolResourceServer"
    Properties:
      Identifier: TenantBatch1
      Name: TenantBatch1
      Scopes:
        - ScopeDescription: tenant1 identifier
          ScopeName: tenant1
        - ScopeDescription: tenant2 identifier
          ScopeName: tenant2
      UserPoolId: !Ref MyUserPool
  MyUserPoolClientTenant1:
    Type: "AWS::Cognito::UserPoolClient"
    Properties:
      AllowedOAuthFlows:
        - client_credentials
      AllowedOAuthFlowsUserPoolClient: true
      AllowedOAuthScopes:
        - !Sub "${MyUserPoolTenantBatch1ResourceServer}/tenant1"
        - !Sub "${MyUserPoolResourceServer}/readScope"
      GenerateSecret: true
      UserPoolId: !Ref MyUserPool
Outputs:
  UserPoolClientId:
    Description: User pool client ID
    Value: !Ref MyUserPoolClientTenant1
  UserPoolDomain:
    Description: User pool domain
    Value: !Sub "https://${MyUserPoolDomain}.auth.${AWS::Region}.amazoncognito.com"
```