相关疑难解决方法(0)

Identity Server 4上授权客户端的自定义端点

我希望我的Identity Server 4服务器"MyAdditionalService"为某些已注册的客户端提供附加服务(例如)。他们将通过要在服务器上定义的自定义端点来使用该服务。

我正在考虑为该服务定义一个API(例如,名为“ myAdditionalService”),以便可以根据客户端的配置将对此类服务的访问权限授予客户端。但是,我不确定如何限制对端点的访问(MVC-Action方法),该端点仅允许被允许使用API​​的客户端(可能代表用户)。

我发现自己可以:

services.AddAuthorization(options =>
     {
       options.AddPolicy("MyAdditionalServicePolicy",
           policy => policy.RequireClaim("scope", 
           "myAdditionalService"));
      });
Run Code Online (Sandbox Code Playgroud)

并使用该属性[Authorize("MyAdditionalServicePolicy")]来装饰用于访问此类服务的操作方法。但是,我不知道服务器是否可以同时成为API,或者即使可能也可以。

我该如何实施?令牌服务还扮演着API的角色,这令人困惑,因为它可以保护对操作方法或端点的访问。

谢谢。


更新:

我的Web应用程序是一个IdentityServerWithAspNetIdentity,它已经使用了Asp.net核心身份的身份验证机制。就本例而言,我的Web应用程序向某些注册客户提供的附加服务是用户的Twitter朋友列表(以名为Twitter的控制器为模型,名为ImportFriends的操作),因此api被称为“ TwitterFriends”

根据以下回应的建议,我将Configure()方法修改为具有app.UseJwtBearerAuthentication()。我已经有app.UseIdentity()app.UseIdentityServer()如下图所示:

        app.UseIdentity();
        app.UseIdentityServer();


        app.UseJwtBearerAuthentication(new JwtBearerOptions
        {
            AuthenticationScheme = "Bearer",
            Authority = Configuration["BaseUrl"],
            Audience = "TwitterFriends",
            RequireHttpsMetadata = false                 //TODO: make true, it is false for development only
        });

        // Add external authentication middleware below. To configure them please see http://go.microsoft.com/fwlink/?LinkID=532715
        app.UseGoogleAuthentication(new GoogleOptions
        {
            AuthenticationScheme = "Google",
            SignInScheme …
Run Code Online (Sandbox Code Playgroud)

identityserver4

3
推荐指数
1
解决办法
2131
查看次数

标签 统计

identityserver4 ×1