關於必須使用HTTPS這個問題,不少朋友都在羣裏問到了,不過因爲這個問題很簡單,一直也沒經過文章的方式記錄下來,今日有時間,便說說它的來龍去脈吧,給須要的人解惑~。git
本文所使用代碼爲 IdentityServer4 的 QuickStart2 的源代碼,文末會給出下載地址github
該項目默認監聽 localhost ,咱們須要改變,讓咱們經過局域網IP也能訪問(後文解釋)。打開 launchSettings.json
修改 applicationUrl
,以下圖:json
而後啓動 QuickstartIdentityServer,出現下圖所示則表示修改正確 :api
打開瀏覽器,經過局域網ip(個人局域網ip是:192.168.0.102)訪問,確保咱們能成功訪問。瀏覽器
首先將該項目訪問 Ids4 的地址改成局域網地址:app
而後啓動,能夠看到報錯了,提示必須使用 HTTPS。ide
關於
/.well-known/openid-configuration
這個地址這裏簡單提一下,這個是 OpenIdConnect 協議中定義的一個 EndPoint 用於獲取,其餘 EndPoint 等信息。ui
下面咱們介紹如何來解決。3d
咱們修改一下 ResourceOwnerClient 項目的代碼:code
主要是這句代碼
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