序文
OAuth 2.0の承認デフォルトモードの4種類(GrantType)
- 認証コードパターン(authorization_code)
- 簡易モード(暗黙)
- パスワードモード(リソース所有者パスワードの認証情報)
- クライアント・モード(client_credentials)
この章では、クライアントモード(クライアント資格情報)を記述し
、彼は主にクライアントで構成され、認証サーバは、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