Jadual Kandungan
1. 业务场景
2. 解决方案
Rumah pembangunan bahagian belakang Tutorial C#.Net IdentityServer4 授权配置AllowedScopes实例

IdentityServer4 授权配置AllowedScopes实例

Jun 24, 2017 am 10:48 AM
membenarkan

1. 业务场景

IdentityServer4 授权配置Client中的AllowedScopes,设置的是具体的 API 站点名字,也就是使用方设置的ApiName,示例代码:

//授权中心配置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});
Salin selepas log masuk

上面两个api_name1配置要一致,问题来了,因为授权中心的scope配置是整个 API 服务,如果我们存在多个Client配置,比如一个前台和后台,然后都需要访问api_name1,就会出现一些问题。

比如,api_name1服务中的一个接口服务配置代码:

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

Authorize()的配置,说明api/values接口需要授权后访问,如果授权中心配置了两个Client(前台和后台),并且scope都包含了api_name1,现在就会出现两种情况:

  1. 前台Client和后台Client,都需要授权后访问api/values接口:没有问题。

  2. 前台Client不需要授权后访问,后台Client需要授权后访问:有问题,前台Client没办法访问了,因为api/values接口设置了Authorize()

其实,说明白些,就是该如何让 API 服务指定Client授权访问?比如:[Authorize(ClientId = 'client_id_1')]

2. 解决方案

没有[Authorize(ClientId = 'client_id_1')]这种解决方式,不过可以使用[Authorize(Roles = 'admin')]

授权中心的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);
        }
    }
}
Salin selepas log masuk

授权中心的startup配置,修改如下

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());
Salin selepas log masuk

API 服务接口,只需要配置如下:

[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();
}
Salin selepas log masuk

需要注意的是,api/values接口虽然没有设置具体的Roles,但每个Role都可以访问。

Atas ialah kandungan terperinci IdentityServer4 授权配置AllowedScopes实例. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menaik taraf win10 enterprise versi 2016 versi perkhidmatan jangka panjang kepada versi profesional Bagaimana untuk menaik taraf win10 enterprise versi 2016 versi perkhidmatan jangka panjang kepada versi profesional Jan 03, 2024 pm 11:26 PM

Apabila kami tidak lagi mahu menggunakan Edisi Perkhidmatan Jangka Panjang Win10 Enterprise 2016, kami boleh memilih untuk beralih kepada Edisi Profesional Kaedahnya juga sangat mudah. ​​Kami hanya perlu menukar beberapa kandungan dan memasang imej sistem. Cara menukar versi perkhidmatan jangka panjang win10 enterprise 2016 kepada versi profesional 1. Tekan win+R, dan kemudian masukkan "regedit" 2. Tampal laluan berikut terus dalam bar alamat di atas: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT \CurrentVersion3 , kemudian cari EditionID dan gantikan kandungan dengan "profesional" untuk mengesahkan

Cara menggunakan Flask-Security untuk melaksanakan pengesahan dan kebenaran pengguna Cara menggunakan Flask-Security untuk melaksanakan pengesahan dan kebenaran pengguna Aug 04, 2023 pm 02:40 PM

Cara menggunakan Flask-Security untuk melaksanakan pengesahan dan kebenaran pengguna Pengenalan: Dalam aplikasi web moden, pengesahan dan kebenaran pengguna adalah fungsi penting. Untuk memudahkan proses ini, Flask-Security ialah sambungan yang sangat berguna yang menyediakan satu siri alatan dan fungsi untuk menjadikan pengesahan dan kebenaran pengguna mudah dan mudah. Artikel ini akan memperkenalkan cara menggunakan Flask-Security untuk melaksanakan pengesahan dan kebenaran pengguna. 1. Pasang sambungan Flask-Security: pada permulaan

UniApp melaksanakan analisis terperinci log masuk dan kebenaran pengguna UniApp melaksanakan analisis terperinci log masuk dan kebenaran pengguna Jul 05, 2023 pm 11:54 PM

UniApp melaksanakan analisis terperinci log masuk dan kebenaran pengguna Dalam pembangunan aplikasi mudah alih moden, log masuk dan kebenaran pengguna adalah fungsi penting. Sebagai rangka kerja pembangunan merentas platform, UniApp menyediakan cara yang mudah untuk melaksanakan log masuk dan kebenaran pengguna. Artikel ini akan meneroka butiran log masuk dan kebenaran pengguna dalam UniApp, dan melampirkan contoh kod yang sepadan. 1. Pelaksanaan fungsi log masuk pengguna Cipta halaman log masuk Fungsi log masuk pengguna biasanya memerlukan halaman log masuk, yang mengandungi borang untuk pengguna memasukkan nombor akaun dan kata laluan mereka dan butang log masuk

Bagaimana untuk mendapatkan kebenaran untuk kepingan dan barangan Douyin? Adakah penghirisan Douyin mudah dibuat? Bagaimana untuk mendapatkan kebenaran untuk kepingan dan barangan Douyin? Adakah penghirisan Douyin mudah dibuat? Mar 07, 2024 pm 10:52 PM

Douyin, sebagai platform media sosial yang popular pada masa ini, bukan sahaja menyediakan orang ramai dengan banyak kandungan hiburan, tetapi juga telah menjadi saluran penting bagi banyak jenama dan peniaga untuk mempromosikan produk dan mencapai jualan. Antaranya, produk menghiris dan menjual Douyin telah menjadi kaedah pemasaran yang baru dan cekap. Jadi, bagaimana anda mendapatkan kebenaran untuk produk hirisan Douyin 1. Bagaimanakah anda mendapatkan kebenaran untuk produk hirisan Douyin menguraikan video panjang menjadi klip video pendek dan membenamkan maklumat promosi produk ke dalamnya untuk menarik penonton? untuk membeli. . Apabila menghiris dan menjual barang di Douyin, langkah pertama ialah mendapatkan kebenaran video asal. Apabila mencari pemberi lesen yang sesuai, anda boleh mempertimbangkan untuk menggunakan pelbagai saluran seperti platform Douyin, media sosial dan forum industri. Cari pencipta atau pemegang hak cipta dengan kandungan video popular dan berhubung secara aktif dengan mereka,

Bagaimana untuk melaksanakan pengesahan dan kebenaran dalam aplikasi PHP menggunakan JWT Bagaimana untuk melaksanakan pengesahan dan kebenaran dalam aplikasi PHP menggunakan JWT Aug 03, 2023 pm 10:17 PM

Cara menggunakan JWT untuk melaksanakan pengesahan dan kebenaran dalam aplikasi PHP Pengenalan: Dengan perkembangan pesat Internet, pengesahan dan kebenaran menjadi semakin penting dalam aplikasi web. JSONWebToken (JWT) ialah mekanisme pengesahan dan kebenaran popular yang digunakan secara meluas dalam aplikasi PHP. Artikel ini akan memperkenalkan cara menggunakan JWT untuk melaksanakan pengesahan dan kebenaran dalam aplikasi PHP, dan menyediakan contoh kod untuk membantu pembaca memahami penggunaan JWT dengan lebih baik. 1. Pengenalan kepada JWTJSONWebTo

Pengesahan dan kebenaran pengguna dalam Flask Pengesahan dan kebenaran pengguna dalam Flask Jun 17, 2023 pm 06:02 PM

Dengan penggunaan aplikasi web yang meluas, keselamatan dan perlindungan data telah menjadi isu penting dalam pembangunan aplikasi web. Untuk memastikan keselamatan aplikasi web, pengesahan dan kebenaran pengguna diperlukan. Sebagai rangka kerja pembangunan web yang popular, Flask menyediakan banyak mekanisme untuk melaksanakan pengesahan dan kebenaran pengguna. Pengesahan Pengguna Pengesahan pengguna merujuk kepada menggunakan kaedah pengesahan tertentu untuk menentukan sama ada identiti pengguna adalah sah apabila pengguna mengakses aplikasi web. Flask menawarkan banyak

Apa yang perlu dilakukan jika kebenaran wps telah tamat tempoh dan teks tidak boleh dimasukkan? Apa yang perlu dilakukan jika kebenaran wps telah tamat tempoh dan teks tidak boleh dimasukkan? Mar 20, 2024 am 09:00 AM

Terdapat banyak perisian tulen untuk melindungi hak harta intelek mereka sendiri Sebelum menggunakan perisian, pengguna mesti mendapatkan beberapa kebenaran dan mendapatkan kebenaran daripada pembangun sebelum mereka boleh menggunakannya. Sesetengah perisian mempunyai tempoh percubaan Selepas tempoh ini, anda perlu mendapatkan kebenaran semula sebelum anda boleh menggunakannya seperti biasa. Jika wps menggesa bahawa kebenaran telah tamat tempoh, kami tidak boleh melakukan sebarang operasi. Bagaimana untuk menyelesaikan masalah ini, mari kita lihat penjelasan di bawah. 1. Saya membuka program teks WPS dan klik pada kotak merah dalam gambar di atas, seperti yang ditunjukkan dalam gambar di bawah. 2. Klik Configuration and Repair Tools. 3. Pilih "Lanjutan" seperti yang ditunjukkan dalam rajah di bawah. 4. Klik pusat pengurusan produk untuk memadam kandungan gesaan "Tamat tempoh", seperti yang ditunjukkan dalam rajah di bawah. 5. Selepas mengklik "Tambah", masukkan nombor siri, seperti yang ditunjukkan dalam rajah di bawah. 6. Kemudian dahulu

Bagaimana untuk melaksanakan fungsi pengesahan dan kebenaran pengguna melalui rangka kerja Webman? Bagaimana untuk melaksanakan fungsi pengesahan dan kebenaran pengguna melalui rangka kerja Webman? Jul 07, 2023 am 09:21 AM

Bagaimana untuk melaksanakan fungsi pengesahan dan kebenaran pengguna melalui rangka kerja Webman? Webman ialah rangka kerja web ringan berdasarkan Python, yang menyediakan fungsi yang kaya dan kebolehskalaan yang fleksibel. Dalam pembangunan, pengesahan dan kebenaran pengguna adalah fungsi yang sangat penting Artikel ini akan memperkenalkan cara menggunakan rangka kerja Webman untuk melaksanakan fungsi ini. Pasang Webman Pertama, kita perlu memasang Webman. Anda boleh menggunakan arahan pip untuk memasang: pipinstallwebman

See all articles