認定ソース決意ネットコア認証システムのソースコードの解析のクッキーネットコア・認証制度

上記に加えてネットコア認証システムのソースコードの解析、クッキーの認定は、一般的に使用される認証モードであってもよいが、前端と後端が主流から分離されているが、少し無味、エンドサイト管理背景やウェブサイトを移動することを検討していない、この認証方法を使用することができます。注:ブラウザベースの前ではなく、建築の分離(サーバー側の処理能力を持つページ終了)携帯端末の終了後に、一般的にJwtBearer認定缶を使用し、携帯端末に分離の終了前に認証APIを提供し支援する前と後にあまりにも多くの問題を考慮していません。 IdentityServer4組み合わせてパスワードモード。それは適しているが、ユーザー名とパスワードを公開するため、各クライアントのID4パスワードモードは、絶対的な信頼関係でなければなりません。エンタープライズ製品の下のすべての認証に適しています。呼び出しに加えて、サードパーティ製の企業をサポートしていません。もちろんID4の申し出他のモデル。これは余談ですが、シーンが明確に説明されました。ようにあなたを誤解しないように!

 

1、クッキー認証プロセス

 

 

 認証のコアコンポーネントを導入した後に、クッキースケーラブルな方法の導入による認証は、Microsoftのプログラミングチェーン、ネットコアの非常にエレガントな主要機能を使用して。

 

 

 

 インジェクションクッキー認証方式、認証パラメータは、クッキー、クッキーを指定し、認証処理、最初に導入されたパラメータが何をしたかのプロセッサが表示されませんを指定します。

 

 

 クッキーのコア認証方法以下のように、最初のステップは次のとおりです。

 

 

 

 

 

 

 

 

 いくつかの抗だけでコアコードを貼り付け、操作、ノーショット、導入されていない、安全性を繰り返す必要があります。最初のステップは、クッキー情報は、クライアントが存在する読むことです。

 

 

 あなたが実現クッキーの内容を読んでいる人、クッキーのコンテキストをカスタマイズすることができますし、クッキーを達成するためのカスタムコンテンツを取得することができますので、彼は、あなたにそれに名前を付けるだろう手段クッキーパラメータインタフェース、マイクロソフト提供の証明。クッキーは、コンテンツを復号化

 

 

 

 

 

 クライアントのクッキーの内容は、一般的に暗号化されたコンテンツに表示されているので、あなたが、指定したが、Microsoftのデフォルトの実装を使用していない場合は、Microsoftのコアコア暗号化コンポーネントには、私たち自身の百度、鍵はまた、クッキー認証パラメータによって設定することができます。

接着

 

 

 取得cliam seesionId、および請求について言っても過言ではないが、自己Baiduの.core新しいアイデンティティモデルは知っている必要があります。

cookie认证参数中你可以配置SessionStore,意味者你的session可以进行持久化管理,数据库还是redis还是分布式环境自行选择.应用场景是cookie过长,客户端无法存储,那么就可以通过配置这个SessionStore来实现.即分布式会话.微软也提供了扩展.

接着,cookie过期检测.

 

 

接着

 

 

 

 

 

 上面的代码意味着cookie可以自动刷新.通过以下两个参数

 

 

 如果读取到的客户端的cookie支持过期刷新,那么重新写入到客户端.

 

ok,如果没有在客户端读取到cookie内容,意味者cookie被清除,或者用户是第一次登陆,直接返回认证失败,如果成功,执行认证cookie校验认证上下文的方法

 

 

 

 Events可以在AuthenticationSchemeOptions参数中配置

 

 

 但是Cookie认证参数提供了默认实现

 

 

 

 

 

 意味者你可以在注入Cookie认证服务的时候,自定义验证cookie结果的验证实现.

通过CookieAuthenticationOptions的Events属性进行注入.验证完毕,

 

 判断上下文中的ShouldRenew参数,这个你可以根据业务需要执行刷新cookie的实现,最后返回认证结果.

整个流程到这里结束.

 

2、应用

因为登陆页面不能进行认证,所以必须加一个中间件放行登陆页面,代码如下:

public static IApplicationBuilder UseAuthorize(this IApplicationBuilder app)
        {
            return app.Use(async (context, next) =>
            {
                if (context.Request.Path == "/Account/Login")
                {
                    await next();
                }
                else
                {
                    var user = context.User;
                    if (user?.Identity?.IsAuthenticated ?? false)
                    {
                        await next();
                    }
                    else
                    {
                        await context.ChallengeAsync();
                    }
                }
            });
        }

接着将中间件注入

 

 接着构建登陆页面和首页,直接网上找了,代码如下:

 

おすすめ

転載: www.cnblogs.com/GreenLeaves/p/12093972.html