08.IdentityServer4登陸中心

08.IdentityServer4登陸中心

IdentityServer就是一套Framework,實現了OAuth的受權html

理解OAuth流程,學會怎麼使用他web

 

http://ruanyifeng.com/blog/2014/05/oauth_2_0.htmlapi

客戶端模式(client credentials)微信

客戶端模式,在使用微信支付或者支付寶支付的時候,會使用這種模式session

簡單的實現一個IdentityServermvc

 

 

 

 

首先新建webapi的項目

在個人電腦D:\MyDemos\jesse\下建立文件夾IdentityServerSampleapp

D:\MyDemos\jesse\IdentityServerSampleide

而後在這個文件夾下面打開dos窗體。建立webapi的項目post

dotnet new webapi --name IdentityServerCenter微信支付

 

D:\MyDemos\jesse\IdentityServerSample\IdentityServerCenter

 

視頻上用VScode打開的。 我仍是用VS2017打開吧

添加Nuget包

Nuget安裝包:IdentityServer4

 

 

添加StartUp配置

在MVC之前添加service配置

 

引入命名空間 using IdentityServer4;

配置添加到依賴注入裏面

  services.AddIdentityServer()
                .AddDeveloperSigningCredential();

添加完依賴注入之後,要使用這個Identity

 //app.UseMvc();//這裏咱們暫時用不到MVC。這裏先註釋掉
 app.UseIdentityServer();

 

而後咱們在Program.cs裏面

設置啓動地方爲5000端口

.UseUrls("http://localhost:5000")

 

 

Config.cs類

 在根目錄下建立 Config.cs文件

這個類是咱們暫時用來初始化IdentityServer的

類裏面咱們會寫一些靜態方法

這裏返回一個Resource

接下來定義Client客戶端

 

 

在給一個能夠訪問Resource,就是這個Client呢能夠訪問咱們那些Resource

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using IdentityServer4.Models;

namespace IdentityServerCenter
{
    public class Config
    {
        public static IEnumerable<ApiResource> GetResource()
        {
            return new List<ApiResource>
            {
                new ApiResource("api","My Api")
            };
        }
        public static IEnumerable<Client> GetClients()
        {
            return new List<Client>()
            {
                new Client()
                {
                    ClientId="client",
                    AllowedGrantTypes=GrantTypes.ClientCredentials,//最簡單的模式
                    ClientSecrets={
                        new Secret("secret".Sha256())
                    },
                    AllowedScopes={ "api"}
                }
            };
        }

    }
}

 

 

 

把咱們的ApiResoure加入進來

 

 

運行程序

 

這裏我先都註釋掉

這裏沒有添加mvc的管道也沒有添加webapi

webapi和mvc實際上一個管道。

 

 

打開地址,什麼也看不到

http://localhost:5000/

 

identityServer給我提供一個固定的地址:

http://localhost:5000/.well-known/openid-configuration

這裏給咱們一些基本的配置,基本的信息

{
    "issuer": "http://localhost:5000",
    "jwks_uri": "http://localhost:5000/.well-known/openid-configuration/jwks",
    "authorization_endpoint": "http://localhost:5000/connect/authorize",
    "token_endpoint": "http://localhost:5000/connect/token",
    "userinfo_endpoint": "http://localhost:5000/connect/userinfo",
    "end_session_endpoint": "http://localhost:5000/connect/endsession",
    "check_session_iframe": "http://localhost:5000/connect/checksession",
    "revocation_endpoint": "http://localhost:5000/connect/revocation",
    "introspection_endpoint": "http://localhost:5000/connect/introspect",
    "device_authorization_endpoint": "http://localhost:5000/connect/deviceauthorization",
    "frontchannel_logout_supported": true,
    "frontchannel_logout_session_supported": true,
    "backchannel_logout_supported": true,
    "backchannel_logout_session_supported": true,
    "scopes_supported": [
        "api",
        "offline_access"
    ],
    "claims_supported": [],
    "grant_types_supported": [
        "authorization_code",
        "client_credentials",
        "refresh_token",
        "implicit",
        "urn:ietf:params:oauth:grant-type:device_code"
    ],
    "response_types_supported": [
        "code",
        "token",
        "id_token",
        "id_token token",
        "code id_token",
        "code token",
        "code id_token token"
    ],
    "response_modes_supported": [
        "form_post",
        "query",
        "fragment"
    ],
    "token_endpoint_auth_methods_supported": [
        "client_secret_basic",
        "client_secret_post"
    ],
    "subject_types_supported": [
        "public"
    ],
    "id_token_signing_alg_values_supported": [
        "RS256"
    ],
    "code_challenge_methods_supported": [
        "plain",
        "S256"
    ]
}

 

 

這裏是支持的幾種模式

 

這裏是加密的方式

 

會暴露一些endpoint

 

下一節課  咱們要實現Resource。寫一個API

相關文章
相關標籤/搜索