asp.netコアIdentityServer4は、クライアントの資格情報(クライアント証明書)を達成します

序文

OAuth 2.0の承認デフォルトモードの4種類(GrantType)

この章では、クライアントモード(クライアント資格情報)を記述し
、彼は主にクライアントで構成され、認証サーバは、2つの部分から構成されている。
認証サーバは、リソース要求トークンへのアクセスを、クライアントの情報が正しいことを決定した後、クライアントにクライアントをトークンを返します。(このモードでは、ユーザーがクライアントに直接登録することができ、クライアントはその後、独自の認証サーバーの名前を要求します)

認証サーバを設定します

APIプロジェクトを作成し、ポートが5000に設定されています

パッケージ

PM> Install-package IdentityServer4 -version 2.5.3

クラスのコンフィグレーションの作成(設定は保護され、クライアントサーバAPIのリソースへのアクセスを持っていることにします)

    /// <summary>
    ///     Identity配置
    /// </summary>
    public class Config
    {
        /// <summary>
        ///     定义要保护的资源
        /// </summary>
        /// <returns></returns>
        public static IEnumerable<ApiResource> GetApiResources() {
            return new List<ApiResource>
            {
                new ApiResource("api1", "My API")
            };
        }
        /// <summary>
        ///     定义授权客户端
        /// </summary>
        /// <returns></returns>
        public static IEnumerable<Client> GetClients() {
            return new List<Client>
            {
                new Client()
                {
                    ClientId = "client",
                    AllowedGrantTypes = GrantTypes.ClientCredentials, //设置模式,客户端模式
                    ClientSecrets =
                    {
                        new Secret("secret".Sha256())
                    },
                    AllowedScopes = { "api1" }
                }
            };
        }
    }
設定の起動

ConfigureServices内注入法IdentityServer4サービス

 public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
            services.AddIdentityServer()//IdentityServer4服务
               .AddDeveloperSigningCredential()
               .AddInMemoryApiResources(Config.GetApiResources()) //配置资源
               .AddInMemoryClients(Config.GetClients());//把配置文件的Client配置资源放到内存
        }

設定方法にIdentityServer4サービスミドルウェアを追加

app.UseIdentityServer();

クライアントを構築

クライアントプロジェクトを作成し、ポートが5001に設定されています

パッケージ

PM> Install-package IdentityServer4.AccessTokenValidation -version 2.7.0

設定の起動

ConfigureServicesでの認証サーバのアドレスを追加します

  public void ConfigureServices(IServiceCollection services)
        {
            services.AddAuthentication("Bearer")
               .AddIdentityServerAuthentication(options =>
               {
                   options.Authority = "http://localhost:5000";//授权服务器地址
                    options.RequireHttpsMetadata = false;//不需要https    
                    options.ApiName = "api1";
                });
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        }

設定方法にIdentityServer4サービスミドルウェアを追加

app.UseIdentityServer();

テスト

クライアント端末コントローラ増加で上記の値[承認]

リソースサーバーのHTTPへのダイレクトアクセス:// localhostを:5001 / API /値

制限付きアクセスコード401

認証サーバを起動します

http:// localhostを:5000 / .well知ら/ OpenIDのコンフィギュレーション

エンドポイントは/.well-known/openid-configurationで見つけることができます

トークンを取得

スタートの後に我々はtoken_endpointでトークンを取得します

CLIENT_IDは、認証サーバを設定するために私達をCLIENTID
、シークレットの設定のためのclient_secretを
(client_credentials)クライアントモードでは、ここで許可モードをgrant_type、
バウチャー情報を返すように要求、
我々は、を介してサーバリソースにアクセスするためにaccess_tokenは行く
承認のこのタイプの使用これは、トークンになります。

コード200

概要

住所例:https://github.com/fhcodegit/IdentityServer4.Samples
IdentityServer4説明:https://www.cnblogs.com/yyfh/p/11590383.html

おすすめ

転載: www.cnblogs.com/yyfh/p/11595658.html