前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IdentityServer4实战 - 必须使用HTTPS问题解析

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

原创
作者头像
晓晨
修改2018-09-05 22:01:47
7800
修改2018-09-05 22:01:47
举报
文章被收录于专栏:晓晨的专栏晓晨的专栏

一. 前言

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

二. 问题发生

本文所使用代码为 IdentityServer4 的 QuickStart2 的源代码,文末会给出下载地址

1536152285572
1536152285572

1.修改 QuickstartIdentityServer 项目监听地址

该项目默认监听 localhost ,我们需要改变,让我们通过局域网IP也能访问(后文解释)。打开 launchSettings.json 修改 applicationUrl ,如下图:

1536152836540
1536152836540

然后启动 QuickstartIdentityServer,出现下图所示则表示修改正确 :

1536152884619
1536152884619

打开浏览器,通过局域网ip(我的局域网ip是:192.168.0.102)访问,确保我们能成功访问。

1536152981815
1536152981815

2.启动 API 项目

1536153057964
1536153057964

3.启动 ResourceOwnerClient 项目

首先将该项目访问 Ids4 的地址改为局域网地址:

1536153157867
1536153157867

然后启动,可以看到报错了,提示必须使用 HTTPS。

1536153221851
1536153221851

关于 /.well-known/openid-configuration 这个地址这里简单提一下,这个是 OpenIdConnect 协议中定义的一个 EndPoint 用于获取,其他 EndPoint 等信息。

下面我们介绍如何来解决。

三.问题解决

我们修改一下 ResourceOwnerClient 项目的代码:

1536153638525
1536153638525

主要是这句代码

代码语言:txt
复制
var discoveryClient = new DiscoveryClient(ids4Url) {Policy = {RequireHttps = false}};

我们通过设置 RequireHttps 属性为 false 来关闭对 Ids4 地址HTTS的验证。

必须使用HTTPS这个问题,很多人都是部署到生产环境才发生的,因为生产环境很多情况下不会用 localhost作为 IdentityServer4(后文简称 Ids4) 的地址,这个问题并不是 Ids4 引起的,而是我们使用的 IdentityModel 这个组件引起的,它默认限制了当 Ids4 非 localhost 地址时,必须启用HTTPS。

四.资源

项目所用代码:https://github.com/stulzq/IdentityServer4.Samples/tree/master/Practice/04_HTTPS

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一. 前言
  • 二. 问题发生
    • 1.修改 QuickstartIdentityServer 项目监听地址
      • 2.启动 API 项目
        • 3.启动 ResourceOwnerClient 项目
        • 三.问题解决
        • 四.资源
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档