前文

本文所有内容来自官方文档,如果有写不明白的地方请下方留言或查看官方文档。

今天介绍Authorization Code模式,适用于保密类型的客户端,保密类型客户端可以理解为在服务器端生成页面(比如传统mvc)。

开始

我们需要改进的东西:

Is4项目

我们需要的东西:

一个mvc客户端

Is4项目改进

1)添加UI

因为Authorization Code中客户端涉及到用户(资源持有人),所以我们需要一个登陆页面。在is4项目文件夹中打开命令行执行 dotnet new is4ui,可以看到执行完成之后文件夹是这样的:

多了Views和Quickstart文件夹。

注:

Views:存放视图文件。

Quickstart:存放控制器,检查器等一些列核心工具。(比较重要)

在依赖注入中添加控制器和视图:services.AddControllersWithViews();

此时执行的话会看到一个没有css的网页,因为我们还没有加静态文件中间件。在startup中app.UseIdentityServer();之前添加app.UseStaticFiles();这样运行应该会看到以下界面:

2)添加测试用户

这个比较简单,因为生成UI的时候携带一个测试用户的文件叫做TestUser.cs,在Quickstart文件夹下可以找到,所以我们只需要使用AddTestUsers把测试用户添加进去即可,代码如下:

3)添加客户端

我们需要在config文件中添加一个关于mvc的客户端,直接贴代码:

由于Authorization Code模式中存在用户,所以我们可以获取用户的某些信息(Ids中定义了可以获取的用户信息)。

此时运行程序,在登录页面可以正常的登录/登出,则证明配置成功。登陆地址可以在上面找到。

创建mvc客户端

1) 创建项目

首先创建一个mvc客户端,并且安装Microsoft.AspNetCore.Authentication.OpenIdConnect包,很简单不贴图了

2) 配置中间件

需要两个中间件UseAuthentication和UseAuthorization这两个缺一不可。需要在home控制器中添加[Authorize]特性

3) 配置注入服务

4) 显示用户信息

为了方便,我们在home/index中遍历出所有请求到的用户信息:只需要在index页面添加一下代码即可:

@using Microsoft.AspNetCore.Authentication

<h2>Claims</h2>

<dl>

@foreach (var claim in User.Claims)

{

<dt>@claim.Type</dt>

<dd>@claim.Value</dd>

}

</dl>

<h2>Properties</h2>

<dl>

@foreach (var prop in (await Context.AuthenticateAsync()).Properties.Items)

{

<dt>@prop.Key</dt>

<dd>@prop.Value</dd>

}

</dl>

测试

好了我们来登入一下试试:

登录之后应该是这个样子的,具体信息可以自己看一下。

总结

如果上一篇理解了,那么这一篇是非常容易的,只需要在各个进程之间添加一些配置就大功告成了。

最后请教一个问题,我在做的时候进行登录的时候,点击登录出现了is4跳转mvc(这是正常的),然后mvc竟然又去is4请求token,两个进程之间疯狂跳转,后来也不知道怎么回事就好了。。。请大佬请指点(抱拳)。

IdentityService4学习笔记之Authorization Code的更多相关文章

  1. IdentityService4学习笔记之Client Credentials

    IdentityService4简介 一套为应用程序构建身份认证和访问控制解决方案/框架,包括单点登录,身份认证,授权和API访问控制. 前文 今天介绍ClientCredentials认证类型,适用 ...

  2. 前端学习笔记--Visual Studio Code安装及中文显示

    1.在官网https://code.visualstudio.com/下载对应的版本: 2.安装 一路点击下一步,选中  添加到PATH后,安装. 安装成功,可以直接打开使用: 把界面改成中文显示: ...

  3. 【学习笔记】VS Code的launch.json 的 Python和Chrome常用配置(MacOS)

    遇到的问题: 1.无法直接用VS Code调用Chrome来打开HTML文件 2.VS Code调用Chrome成功后,Python解释器无法启动调试了 解决方法: 以下是我的 launch.json ...

  4. EF Code First学习笔记

    EF Code First学习笔记 初识Code First EF Code First 学习笔记:约定配置 Entity Framework 复杂类型 Entity Framework 数据生成选项 ...

  5. bootstrap学习笔记之为导航条添加标题、二级菜单及状态 http://www.imooc.com/code/3120

    为导航条添加标题.二级菜单及状态 加入导航条标题 在Web页面制作中,常常在菜单前面都会有一个标题(文字字号比其它文字稍大一些),其实在Bootstrap框架也为大家做了这方面考虑,其通过" ...

  6. bootstrap学习笔记之基础导航条 http://www.imooc.com/code/3111

    基础导航条 在Bootstrap框中,导航条和导航从外观上差别不是太多,但在实际使用中导航条要比导航复杂得多.我们先来看导航条中最基础的一个--基础导航条. 使用方法: 在制作一个基础导航条时,主要分 ...

  7. Go学习笔记(二)搭建Visual Studio Code调试环境

    上一篇 Go学习笔记(一)安装Go语言环境 安装Visual Studio Code 这是目前我觉得最好用的文本编辑器了, https://code.visualstudio.com/ 中间有几部确认 ...

  8. amazeui学习笔记--css(HTML元素2)--代码Code

    amazeui学习笔记--css(HTML元素2)--代码Code 一.总结 1.行内代码:code标签<code> 2.代码片段:pre标签<pre> 3.限制代码块高度:添 ...

  9. OAuth2.0学习(1-4)授权方式1-授权码模式(authorization code)

    参与者列表: (1) Third-party application:第三方应用程序,又称客户端(client),如:"云冲印".社交应用. (2)HTTP service:HTT ...

随机推荐

  1. bat脚本输出日志

    一,bat脚本常用的的输出命令是“echo 输出内容”,可以利用echo将文本输出到cmd窗口或文件.bat脚本是不区分大小写的脚本语言,因此大小写都可以. 例如: REM 在命令行窗口输出 echo ...

  2. 服务器CPU很高,频繁FullGC排查小总结

    可以分为如下步骤: ①通过 top 命令查看 CPU 情况,如果 CPU 比较高,则通过 top -Hp 命令查看当前进程的各个线程运行情况. 找出 CPU 过高的线程之后,将其线程 id 转换为十六 ...

  3. Golang 需要避免踩的 50 个坑(三)

    前言 Go 是一门简单有趣的编程语言,与其他语言一样,在使用时不免会遇到很多坑,不过它们大多不是 Go 本身的设计缺陷.如果你刚从其他语言转到 Go,那这篇文章里的坑多半会踩到. 如果花时间学习官方 ...

  4. linux epoll,poll,select

    epoll函数用法,还有点poll和select 1,LT的epoll是select和poll函数的改进版. 特点是,读完缓冲区后,如果缓冲区还有内容的话,epoll_wait函数还会返回,直到把缓冲 ...

  5. 2018年蓝桥杯B组C/C++决赛题目

    自己的博客排版,自我感觉略好一点. 先放上题目. 点击查看2018年蓝桥杯B组C/C++决赛题目题解     1.换零钞 x星球的钞票的面额只有:100元,5元,2元,1元,共4种. 小明去x星旅游, ...

  6. flask中的Flask、request、render_temple、redirect和url_for

    学flask也有一个多星期了,对这个web框架也有了一点的了解,梳理一些基础的知识点,还是小白一只,代码写得比较low,若文章有错误的地方欢迎大佬随时指正,代码中被注释掉的代码是关于预防csrf,无视 ...

  7. 开放接口的安全验证方案(AES+RSA)

    http://wubaoguo.com/2015/08/21/%E5%BC%80%E6%94%BE%E6%8E%A5%E5%8F%A3%E7%9A%84%E5%AE%89%E5%85%A8%E9%AA ...

  8. 页面元素定位及操作--xpath

    简介: 在 XPath 中,有七种类型的节点:元素.属性.文本.命名空间.处理指令.注释以及文档(根)节点.XML 文档是被作为节点树来对待的.树的根被称为文档节点或者根节点. /xxx 页面输出 / ...

  9. CF1234A Equalize Prices

    洛谷 CF1234A Equalize Prices Again 洛谷传送门 题目描述 You are both a shop keeper and a shop assistant at a sma ...

  10. LG2578 「ZJOI2005」九数码游戏 bfs

    问题描述 LG2578 题解 用string+map去重. bfs即可. \(\mathrm{Code}\) #include<bits/stdc++.h> using namespace ...