Web APIエンドポイントを設定して、IdentityServerからの異なる許可タイプを使用するにはどうすればよいですか?Web APIエンドポイントごとに異なるフロー
今私はスタートアップのために持っているのです。
app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions()
{
Authority = "http://localhost:5000",
RequiredScopes = new[] { "public", "read", "write" }
});
コントローラー:クライアントのフローエンドポイントならば、それは意味がありませんので、
// Assuming to access this endpoint you need to have client id/secret (client credential flow)
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// Assuming to access this endpoint you need to have username/password (password flow)
[ResourceAuthorization("read")]
public string Get(int id)
{
return "value";
}
もちろん一方のエンドポイントは、唯一の許可タイプを持つことができますパスワードの流れも許可されます。
これは悪い構造ですか?
パブリックAPI(認証情報フロー)、パスワードフローエンドポイント、および内部エンドポイント(企業のインフラストラクチャに公開しない)を別のプロジェクトに分けるだけでよいですか?
異なるエンドポイントのスコープを指定する方法を教えてください。 (例えば、1つのエンドポイントは公開が必要であり、1つは読まなければならない)
しかし、クライアントがクライアントフローを使用して認証された場合はどうなりますか? ResourceAuthorizationは引き続き機能しますか? – gnaungayan
私が理解したように、ユーザがパスワードログインを使用してログインしていることを意味するユーザがいる場合は、ResourceAuthorizationを使用し、ユーザが関与していない場合はScopeAuthorizationを使用する必要があります。 ScopeAuthorizationを見ると、以前のものを使用すべきかどうかは非難されました。 – gnaungayan
^https://speakerdeck.com/leastprivilege/web-api-authorization-and-access-control-done-right-ndc-oslo-2014?slide=43 – gnaungayan