1.配置两种认证方式

    JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
}) .AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
options.SignInScheme = "Cookies";
options.Authority = GZSetting.ApiAuthIp;
options.RequireHttpsMetadata = false;
options.ClientId = GZSetting.MvcClientId;
options.ClientSecret = GZSetting.ClientSecret;
options.ResponseType = "code id_token";
options.Scope.Clear();
options.Scope.Add("openid");
options.Scope.Add(GZSetting.ApiName);
//options.Scope.Add("roles");
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true; options.ClaimActions.MapUniqueJsonKey("role", "role"); })
.AddIdentityServerAuthentication("Bearer", options =>
{
options.RequireHttpsMetadata = false;
options.Authority = GZSetting.ApiAuthIp;
options.ApiName = GZSetting.ApiName;
});

2.配置授权策略

 services.AddAuthorization(option =>
{
//默认 只写 [Authorize],表示使用oidc进行认证
option.DefaultPolicy = new AuthorizationPolicyBuilder("oidc").RequireAuthenticatedUser().Build();
//ApiController使用这个 [Authorize(Policy = "ApiPolicy")],使用jwt认证方案
option.AddPolicy("ApiPolicy", policy =>
{
policy.AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme);
policy.RequireAuthenticatedUser();
});
});

3.给Webapi的控制器添加授权标签

    [Authorize(Policy = "ApiPolicy")]
[Route("api/[controller]/[action]")]
[ApiController]
public class TestInfoController : ControllerBase

4.如果一个控制器要求Jwt认证或OpenId认证(当在普通控制器中写Api接口时,就需要这样写)

[Authorize(AuthenticationSchemes = "Bearer,Cookies")]
public class KeyValueStoresController : Controller

使用IdentityServer4,在一个ASPNetCore项目中,配置oidc和api的AccessToken两种认证授权的更多相关文章

  1. 在同一个项目中灵活运用application/json 和application/x-www-form-urlencoded 两种传输格式(配合axios,同时配置loading)

    'use strict' import axios from 'axios' // import qs from 'qs' import { Notification} from 'element-u ...

  2. android项目中配置NDK自动编译生成so文件

    1 下载ndk开发包   2 在android 项目中配置编译器(以HelloJni项目为例)  2.1 创建builer  (a)Project->Properties->Builder ...

  3. ckeditor编辑器在java项目中配置

    一.基本使用: 1.所需文件架包 A. Ckeditor基本文件包,比如:ckeditor_3.6.2.zip 下载地址:http://ckeditor.com/download 2.配置使用 A.将 ...

  4. C# 在项目中配置Log4net

    我们介绍一下在项目中配置log4net,是Apache基金会旗下的. 无论在什么环境中,配置log4net的逻辑都一样. 1)文件配置 首先在项目加载文件中,配置log4net加载项. 在Web项目中 ...

  5. WebCollector2.7爬虫框架——在Eclipse项目中配置

    WebCollector2.7爬虫框架——在Eclipse项目中配置 在Eclipse项目中使用WebCollector爬虫非常简单,不需要任何其他的配置,只需要导入相关的jar包即可. Netbea ...

  6. 在maven项目中 配置代理对象远程调用crm

    1 在maven项目中配置代理对象远程调用crm 1.1 在项目的pom.xml中引入CXF的依赖 <dependency> <groupId>org.apache.cxf&l ...

  7. web项目中配置多个数据源

    web项目中配置多个数据源 spring + mybatis 多数据源配置有两种解决方案 1.配置多个不同的数据源,使用一个sessionFactory,在业务逻辑使用的时候自动切换到不同的数据源,  ...

  8. 如何在web项目中配置Spring的Ioc容器

    在web项目中配置Spring的Ioc容器其实就是创建web应用的上下文(WebApplicationContext) 自定义要使用的IoC容器而不使用默认的XmlApplicationContext ...

  9. Spring-Boot项目中配置redis注解缓存

    Spring-Boot项目中配置redis注解缓存 在pom中添加redis缓存支持依赖 <dependency> <groupId>org.springframework.b ...

随机推荐

  1. Android studio 使用startService报错:IllegalStateException

    Android 8.0启动service报错:java.lang.RuntimeException和java.lang.IllegalStateException 错误信息: java.lang.Ru ...

  2. Windows 后台执行jar

    我们都知道Linux下可用命令nohup /opt/jdk1.8.0_131/bin/java -jar xxx.jar &来后台执行jar 如果是Windows环境,要如何在后台执行呢 新建 ...

  3. Ansible 脚本运行一次后,再次运行时出现报错情况,原因:ansible script 的格式不对,应改成Unix编码

    Ansible 脚本运行一次后,再次运行时出现报错情况,原因:ansible  script 的格式不对,应改成Unix编码 find . -name "*" | xargs do ...

  4. .Net Core文件上传

    https://www.cnblogs.com/viter/p/10074766.html 1.内置了很多种绑定模型  缺少了一个FromFileAttribute 绑定模型 需要自己实现一个 pub ...

  5. Python 考试练习

    1.算法复杂度分为:时间复杂度和空间复杂度 一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量. 时间复杂度:是指执行算法所需要的计算工作量,也即算法的执行时间  (注意:是算法的执 ...

  6. Envoy 源码分析--network L4 filter manager

    目录 Envoy 源码分析--network L4 filter manager FilterManagerImpl addWriteFilter addReadFilter addFilter in ...

  7. 使用Visual Studio Installer 2015打包WPF程序

    前言 做过WPF项目,就少不了要将程序打包部署到客户现场,因为一般长时间不会更新打包程序,每次变动较大需要重新配置打包程序时,就会有些生疏,不那么得心应手.为了方便记忆,记录到博客中. 准备 因为做过 ...

  8. chrome浏览器模拟手机端:jquery click()点击无效解决方法

    $(".sku-wrap .ok").click(); chrome浏览器模拟手机端,在油猴插件中写JS代码,然后发现click()点击失效. 解决方法:jquery的click( ...

  9. C#: int 与 byte[] 互转

    public static int ToInt32(params byte[] v) { ; var len = v.Length; ) { len = ; } ; i < len; i++) ...

  10. 简单测试 Kotlin native 性能

    准备 一直使用kotlin JVM平台开发服务器的应用,最近想试试看 Kotlin native的性能. 我使用的是 kotlin native 1.3.21,要使用他非常的简单,下载最新的 IDEA ...