专栏首页晓晨的专栏IdentityServer4实战 - 与API单项目整合

IdentityServer4实战 - 与API单项目整合

一.前言

我们在实际使用 IdentityServer4 的时候,可能会在使用 IdentityServer4 项目添加一些API,比如 找回密码、用户注册、修改用户资料等,这些API与IdentityServer4怎么共存在一个项目呢?

二.整合

1.首先在 Startup.cs 中添加 IdentityServer4

services.AddIdentityServer(options=>options.Authentication.CookieAuthenticationScheme= "Cookies")
                .AddDeveloperSigningCredential()
                .AddInMemoryIdentityResources(Config.GetIdentityResources())
                .AddInMemoryApiResources(Config.GetApis())
                .AddInMemoryClients(Config.GetClients())
                .AddTestUsers(Config.GetUsers());

2.然后在添加 IdentityServer4 下添加认证

services.AddAuthentication("Bearer")
                .AddCookie("Cookies")
                .AddJwtBearer("Bearer", options =>
                {
                    //identityserver4 地址 也就是本项目地址
                    options.Authority = "http://localhost:5000";
                    options.RequireHttpsMetadata = false;
                    options.Audience = "api1";
                });

注意事项

  • Cookie Scheme 是非必须的,但是如果不设置会报错,但是也不会影响正常使用
  • AddAuthentication 必须必须必须 放在 AddIdentityServer 之后

3.中间件配置

app.UseIdentityServer();

这里只需 UseIdentityServer 即可

三.测试

在 IdentityServer4 项目添加一个 Controller

[Route("identity")]
[Authorize]
public class IdentityController : ControllerBase
{
    public IActionResult Get()
    {
        return new JsonResult(from c in User.Claims select new { c.Type, c.Value });
    }
}

将 IdentityServer4 项目的端口设置为5000,使用密码模式,下面进行测试:

1.请求Token

2.请求API

四.资料

本文Demo:

https://github.com/stulzq/IdentityServer4.Samples/tree/master/Practice/05_Integration

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ASP.NET Core 3.0 gRPC 身份认证和授权

    本文算是对于 ASP.NET Core 3.0 gRPC 研究性学习的最后一篇了,以后在实际使用中,可能会发一些经验之文。本文主要讲 ASP.NET Core ...

    晓晨
  • ASP.NET Core的身份认证框架IdentityServer4(6)- 开始

    晓晨
  • IdentityServer4实战 - 必须使用HTTPS问题解析

    关于必须使用HTTPS这个问题,很多朋友都在群里问到了,不过由于这个问题很简单,一直也没通过文章的方式记录下来,今日有时间,便说说它的前因后果吧,给需要的人解惑...

    晓晨
  • LeetCode 496. 下一个更大元素 I(哈希)

    给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的...

    Michael阿明
  • 「镁客·请讲」七鑫易维黄通兵:追求更自然的人机交互,眼球追踪技术正在路上

    镁客网
  • Target Domestic EDI项目实施注意事项及解决方案

    Target与供应商传输的是X12标准报文,业务类型包含850(采购订单)、860(订单变更)、864(文本消息)、856(发货通知)和810(发票),供应商通...

    EDI顾问-杨欢
  • Ubuntu能取代Windows吗?

    任何一种事物都有其必要性,如同现在说的,现在企业玩的其实都是差异化东西,不可能一拥而上,其实现在linux和windows现在处于一种比较平衡的阶段,linux...

    程序员互动联盟
  • 电子标准院:工业互联网平台标准化白皮书(2018)

    近日,中国电子技术标准化研究院联合多家单位编写了《工业互联网平台标准化白皮书(2018)》,为政、产、学、研、用各方组织开展工业互联网平台标准化工作提供支持,更...

    钱塘数据
  • 如何用 Python 给照片换色

    最近遇到了一个需求,就是对图片进行色彩风格转换,让一个物体可以以各种不同的色彩来呈现。

    崔庆才
  • LGBT主题式的VR体验,让你感知同志们的辛酸苦楚

    VRPinea

扫码关注云+社区

领取腾讯云代金券