Inhaltsverzeichnis
1. Geschäftsszenario
Heim Backend-Entwicklung C#.Net-Tutorial IdentityServer4-Autorisierungskonfiguration AllowedScopes-Instanz

IdentityServer4-Autorisierungskonfiguration AllowedScopes-Instanz

Jun 24, 2017 am 10:48 AM
授权

1. Geschäftsszenario

Das Client in der IdentityServer4-Autorisierungskonfiguration AllowedScopes legt den spezifischen API-Site-Namen fest, der dem ApiName entspricht, der vom Benutzer festgelegt wurde:

//授权中心配置new Client
{
    ClientId = "client_id_1",
    AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,
    AllowOfflineAccess = true,
    AccessTokenLifetime = 3600 * 6, //6小时SlidingRefreshTokenLifetime = 1296000, //15天ClientSecrets =
    {new Secret("secret".Sha256())
    },
    AllowedScopes = 
    {"api_name1"},
}//API 服务配置app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
    Authority = $"http://localhost:5000",
    ApiName = "api_name1",
    RequireHttpsMetadata = false});
Nach dem Login kopieren

Die beiden oben genannten api_name1-Konfigurationen müssen konsistent sein. Das Problem entsteht, weil die scope-Konfiguration des Autorisierungscenters der gesamte API-Dienst ist. Wenn wir mehrere Client-Konfigurationen haben, z Wenn es ein Frontend und ein Backend gibt und beide auf api_name1 zugreifen müssen, treten einige Probleme auf.

Zum Beispiel der Konfigurationscode eines Schnittstellendienstes im api_name1-Dienst:

[Authorize()]
[Route("api/values")]
[HttpGet]public IActionResult Get()
{return Ok();
}
Nach dem Login kopieren

Authorize()-Konfiguration, der angibt, dass die api/values-Schnittstelle Für den Zugriff ist eine Autorisierung erforderlich. Wenn das Autorisierungscenter mit zwei Client (Frontend und Backend) konfiguriert ist und beide scope api_name1 enthalten, gibt es jetzt zwei Situationen:

  1. Frontend< Sowohl 🎜> als auch das Backend Client müssen für den Zugriff auf die Client-Schnittstelle berechtigt sein: kein Problem. api/values

  2. Front-End

    erfordert keine Autorisierung für den Zugriff, und Back-End Client erfordert Autorisierung für den Zugriff: Es liegt ein Problem vor, das Front-End Client kann nicht darauf zugreifen, da die Client-Schnittstelle eingestellt ist api/values. Authorize()

Um es genauer zu erklären: Wie kann der API-Dienst tatsächlich

angeben, um den Zugriff zu autorisieren? Zum Beispiel: Client. [Authorize(ClientId = &#39;client_id_1&#39;)]

2. Lösung

Es gibt keine

Lösung, aber Sie können [Authorize(ClientId = &#39;client_id_1&#39;)] verwenden. [Authorize(Roles = &#39;admin&#39;)]

Der

-Code des Autorisierungszentrums wird wie folgt geändert:ResourceOwnerPasswordValidator

public class ResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator
{private readonly IUserService _userService;public ResourceOwnerPasswordValidator(IUserService userService)
    {
        _userService = userService;
    }public async Task ValidateAsync(ResourceOwnerPasswordValidationContext context)
    {var user = await _userService.Login(context.UserName, context.Password);if (user != null)
        {var claims = new List<Claim>() { new Claim("role", "admin") }; //根据 user 对象,设置不同的 rolecontext.Result = new GrantValidationResult(user.UserId.ToString(), OidcConstants.AuthenticationMethods.Password, claims);
        }
    }
}
Nach dem Login kopieren
Die

Konfiguration des Autorisierungszentrums wird wie folgt geändertstartup

var builder = services.AddIdentityServer();
builder.AddTemporarySigningCredential()//.AddInMemoryIdentityResources(Config.GetIdentityResources()).AddInMemoryApiResources(new List<ApiResource>
        {new ApiResource("api_name1", "api1"){ UserClaims = new List<string> {"role"}}, //增加 role claimnew ApiResource("api_name2", "api2"){ UserClaims = new List<string> {"role"}}
        })
        .AddInMemoryClients(Config.GetClients());
Nach dem Login kopieren
API-Service-Schnittstelle muss nur wie folgt konfiguriert werden:

[Authorize()]
[Route("api/values")]
[HttpGet]public IActionResult Get()
{return Ok();
}

[Authorize(Roles = "admin")]
[Route("api/values2")]
[HttpGet]public IActionResult Get2()
{return Ok();
}

[Authorize(Roles = "admin,normal")]
[Route("api/values3")]
[HttpGet]public IActionResult Get3()
{return Ok();
}
Nach dem Login kopieren
Es ist zu beachten, dass zwar die

-Schnittstelle hat keinen spezifischen api/values-Satz, zugänglich für jeden Roles. Role

Das obige ist der detaillierte Inhalt vonIdentityServer4-Autorisierungskonfiguration AllowedScopes-Instanz. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So aktualisieren Sie die Langzeitdienstversion von Win10 Enterprise Version 2016 auf die Professional-Version So aktualisieren Sie die Langzeitdienstversion von Win10 Enterprise Version 2016 auf die Professional-Version Jan 03, 2024 pm 11:26 PM

Wenn wir die aktuelle Win10 Enterprise Edition 2016 Long-Term Service Edition nicht mehr verwenden möchten, können wir auf die Professional Edition umsteigen. Die Methode ist auch sehr einfach. Wir müssen nur einige Inhalte ändern und das System-Image installieren. So ändern Sie die Langzeitdienstversion von Win10 Enterprise Version 2016 in die Professional-Version 1. Drücken Sie Win+R und geben Sie dann „regedit“ ein. 2. Fügen Sie den folgenden Pfad direkt in die Adressleiste oben ein: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT \CurrentVersion3 , suchen Sie dann die EditionID und ersetzen Sie den Inhalt zur Bestätigung durch „professional“.

So verwenden Sie Flask-Security zur Implementierung der Benutzerauthentifizierung und -autorisierung So verwenden Sie Flask-Security zur Implementierung der Benutzerauthentifizierung und -autorisierung Aug 04, 2023 pm 02:40 PM

So verwenden Sie Flask-Security zur Implementierung der Benutzerauthentifizierung und -autorisierung Einführung: In modernen Webanwendungen sind Benutzerauthentifizierung und -autorisierung wesentliche Funktionen. Um diesen Prozess zu vereinfachen, ist Flask-Security eine sehr nützliche Erweiterung, die eine Reihe von Tools und Funktionen bereitstellt, um die Benutzerauthentifizierung und -autorisierung einfach und bequem zu gestalten. In diesem Artikel wird erläutert, wie Sie mit Flask-Security die Benutzerauthentifizierung und -autorisierung implementieren. 1. Installieren Sie die Flask-Security-Erweiterung: am Anfang

UniApp implementiert eine detaillierte Analyse der Benutzeranmeldung und -autorisierung UniApp implementiert eine detaillierte Analyse der Benutzeranmeldung und -autorisierung Jul 05, 2023 pm 11:54 PM

UniApp implementiert eine detaillierte Analyse der Benutzeranmeldung und -autorisierung. In der modernen mobilen Anwendungsentwicklung sind Benutzeranmeldung und -autorisierung wesentliche Funktionen. Als plattformübergreifendes Entwicklungsframework bietet UniApp eine bequeme Möglichkeit, Benutzeranmeldung und -autorisierung zu implementieren. In diesem Artikel werden die Details der Benutzeranmeldung und -autorisierung in UniApp erläutert und entsprechende Codebeispiele beigefügt. 1. Implementierung der Benutzeranmeldefunktion. Erstellen Sie eine Anmeldeseite. Für die Benutzeranmeldefunktion ist normalerweise eine Anmeldeseite erforderlich, die ein Formular für Benutzer zur Eingabe ihrer Kontonummer und ihres Kennworts sowie eine Anmeldeschaltfläche enthält

Wie erhalte ich eine Genehmigung für Douyin-Scheiben und -Waren? Ist Douyin-Schneiden einfach zuzubereiten? Wie erhalte ich eine Genehmigung für Douyin-Scheiben und -Waren? Ist Douyin-Schneiden einfach zuzubereiten? Mar 07, 2024 pm 10:52 PM

Als derzeit beliebte Social-Media-Plattform bietet Douyin den Menschen nicht nur eine Fülle an Unterhaltungsinhalten, sondern ist für viele Marken und Händler auch zu einem wichtigen Kanal geworden, um Produkte zu bewerben und Verkäufe zu erzielen. Unter anderem hat sich das Schneiden und Verkaufen von Produkten von Douyin zu einer neuartigen und effizienten Marketingmethode entwickelt. Wie erhalten Sie also eine Genehmigung für die geschnittenen Produkte von Douyin? 1. Wie erhalten Sie eine Genehmigung für die geschnittenen Produkte von Douyin? kaufen. . Beim Schneiden und Verkaufen von Waren auf Douyin besteht der erste Schritt darin, die Genehmigung des Originalvideos einzuholen. Bei der Suche nach einem geeigneten Lizenzgeber können Sie die Nutzung verschiedener Kanäle wie der Douyin-Plattform, sozialer Medien und Branchenforen in Betracht ziehen. Finden Sie Ersteller oder Urheberrechtsinhaber mit beliebten Videoinhalten und vernetzen Sie sich aktiv mit ihnen.

So implementieren Sie Authentifizierung und Autorisierung in PHP-Anwendungen mithilfe von JWT So implementieren Sie Authentifizierung und Autorisierung in PHP-Anwendungen mithilfe von JWT Aug 03, 2023 pm 10:17 PM

So verwenden Sie JWT zur Implementierung von Authentifizierung und Autorisierung in PHP-Anwendungen. Einführung: Mit der rasanten Entwicklung des Internets werden Authentifizierung und Autorisierung in Webanwendungen immer wichtiger. JSONWebToken (JWT) ist ein beliebter Authentifizierungs- und Autorisierungsmechanismus, der in PHP-Anwendungen weit verbreitet ist. In diesem Artikel wird die Verwendung von JWT zur Implementierung von Authentifizierung und Autorisierung in PHP-Anwendungen vorgestellt und Codebeispiele bereitgestellt, um den Lesern ein besseres Verständnis der Verwendung von JWT zu erleichtern. 1. Einführung in JWT JSONWebTo

Benutzerauthentifizierung und -autorisierung in Flask Benutzerauthentifizierung und -autorisierung in Flask Jun 17, 2023 pm 06:02 PM

Mit der weiten Verbreitung von Webanwendungen sind Sicherheit und Datenschutz zu einem wichtigen Thema bei der Entwicklung von Webanwendungen geworden. Um die Sicherheit von Webanwendungen zu gewährleisten, sind Benutzerauthentifizierung und -autorisierung erforderlich. Als beliebtes Webentwicklungs-Framework bietet Flask viele Mechanismen zur Implementierung der Benutzerauthentifizierung und -autorisierung. Benutzerauthentifizierung Unter Benutzerauthentifizierung versteht man die Verwendung einer bestimmten Authentifizierungsmethode, um festzustellen, ob die Identität des Benutzers legitim ist, wenn der Benutzer auf die Webanwendung zugreift. Flask bietet viel

Was tun, wenn die WPS-Autorisierung abgelaufen ist und kein Text eingegeben werden kann? Was tun, wenn die WPS-Autorisierung abgelaufen ist und kein Text eingegeben werden kann? Mar 20, 2024 am 09:00 AM

Es gibt viele Originalsoftware, um ihre eigenen geistigen Eigentumsrechte zu schützen. Bevor Benutzer die Software verwenden können, müssen sie einige Genehmigungen einholen und die Erlaubnis des Entwicklers einholen. Für einige Software gilt eine Testphase. Nach dieser Zeit müssen Sie eine erneute Autorisierung einholen, bevor Sie sie normal verwenden können. Wenn wps Sie darauf hinweist, dass die Autorisierung abgelaufen ist, können wir keine Vorgänge ausführen. Wie Sie dieses Problem lösen können, sehen wir uns die folgende Erklärung an. 1. Ich habe das WPS-Textprogramm geöffnet und auf das rote Kästchen im Bild oben geklickt, wie im Bild unten gezeigt. 2. Klicken Sie auf Konfigurations- und Reparaturtools. 3. Wählen Sie „Erweitert“, wie in der Abbildung unten gezeigt. 4. Klicken Sie auf das Produktverwaltungscenter, um den Inhalt der Eingabeaufforderung „Abgelaufen“ zu löschen, wie in der Abbildung unten dargestellt. 5. Nachdem Sie auf „Hinzufügen“ geklickt haben, geben Sie die Seriennummer ein, wie in der Abbildung unten gezeigt. 6. Dann zuerst

Wie implementiert man Benutzerauthentifizierungs- und Autorisierungsfunktionen über das Webman-Framework? Wie implementiert man Benutzerauthentifizierungs- und Autorisierungsfunktionen über das Webman-Framework? Jul 07, 2023 am 09:21 AM

Wie implementiert man Benutzerauthentifizierungs- und Autorisierungsfunktionen über das Webman-Framework? Webman ist ein leichtes Web-Framework auf Python-Basis, das umfangreiche Funktionen und flexible Skalierbarkeit bietet. In der Entwicklung sind Benutzerauthentifizierung und -autorisierung sehr wichtige Funktionen. In diesem Artikel wird erläutert, wie Sie das Webman-Framework zum Implementieren dieser Funktionen verwenden. Webman installieren Zuerst müssen wir Webman installieren. Sie können den pip-Befehl zur Installation verwenden: pipinstallwebman

See all articles