IdentityServer4實戰 - 必須使用HTTPS問題解析

來源:互聯網
上載者:User

標籤:resource   監聽   資源   必須   協議   url   代碼   conf   setting   

一. 前言

關於必須使用HTTPS這個問題,很多朋友都在群裡問到了,不過由於這個問題很簡單,一直也沒通過文章的方式記錄下來,今日有時間,便說說它的前因後果吧,給需要的人解惑~。

二. 問題發生

本文所使用代碼為 IdentityServer4 的 QuickStart2 的原始碼,文末會給出

1.修改 QuickstartIdentityServer 項目監聽地址

該項目預設監聽 localhost ,我們需要改變,讓我們通過區域網路IP也能訪問(後文解釋)。開啟 launchSettings.json 修改 applicationUrl ,如:

然後啟動 QuickstartIdentityServer,出現所示則表示修改正確 :

開啟瀏覽器,通過區域網路ip(我的區域網路ip是:192.168.0.102)訪問,確保我們能成功訪問。

2.啟動 API 項目

3.啟動 ResourceOwnerClient 項目

首先將該項目訪問 Ids4 的地址改為區域網路地址:

然後啟動,可以看到報錯了,提示必須使用 HTTPS。

關於 /.well-known/openid-configuration 這個地址這裡簡單提一下,這個是 OpenIdConnect 協議中定義的一個 EndPoint 用於擷取,其他 EndPoint 等資訊。

下面我們介紹如何來解決。

三.問題解決

我們修改一下 ResourceOwnerClient 項目的代碼:

主要是這句代碼

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

IdentityServer4實戰 - 必須使用HTTPS問題解析

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.