オンラインの研究 - 16日目 - 講義 - 春のセキュリティのOAuth2 JWT 4

3.3.3  トークン請求 
認可コード、請求トークンを取得します。 
ポスト要求HTTP:// localhostを:40400には、/認証/ OAuthの/トークン 
のパラメータは次の通りです: 
grant_type :認証タイプ、フィルauthorization_code 、明示的な許可コードパターン 
コード:認証コードが、あること、単に認証コードの注意を取得:認証コードは一度だけ使用されています無効、再適用する必要があります。 
REDIRECT_URI :認証コードのアプリケーションにジャンプURL 、およびアプリケーションの認証コードの特定の時間とREDIRECT_URI 一致しています。 
このリンクは必要で  HTTP基本認証を。 
何であるHTTP基本認証は? 
HTTP 認証方式は、プロトコル、クライアントで定義されているID とパスワードをクライアントとしてクライアント:ID クライアントのパスワードとを有する、フォーマットステッチbase64でコードに、コードヘッダ要求サーバ、例:
認証基本WGNXZWJBcHA6WGNXZWJBcHA =
WGNXZWJBcHA6WGNXZWJBcHA =  ユーザ名パスワードbase64でエンコード。 
認証は、サーバーが返すに失敗した  401の無断 
使用して上記のテスト郵便配達:完全な 
HTTP基本認証:
 

 
access_tokenはアクセスリソースへのトークン、これが運ぶ、アクセストークンを: 
TOKEN_TYPE :そこMACトークンベアラートークンの2種類を、二つの異なる較正アルゴリズム、RFC 6750は、推奨のOAuth2を使用して  ベアラトークンhttp://www.rfcreader.com/#rfc6750 )。
refresh_token :リフレッシュトークンが有効期限のアクセストークンを拡張するために、このトークンを使用することができます。 
expires_in :有効期限を、秒単位で。 
範囲:範囲、クライアントに定義された範囲と一致しています。
3.3.4  ライセンスリソースサービス
3.3.4.1  プロセスライセンスリソースサービス 
リソースサービスは、クライアントサービスを保護されたリソースへのアクセスを持っているトークンの資金の合法的な缶に成功アクセスリソースサービスの場合は、リソースにアクセストークンを運ぶソースの下に示すように、: 

 
ビジネスプロセス上の図は以下のよう:

1 、クライアント要求の認証トークンサービスアプリケーション 
2は、トークン認証サービスを生成 
する秘密鍵生成トークンを使用して、非対称暗号化アルゴリズムを使用して認証サービスを。 
図3は、クライアントがリソースのサービスにアクセスするためにトークン運ぶ 
クライアントHTTPヘッダー  :で添加  認可ベアラ  トークン。 
4 、サービス要求の認証サービスのリソースは、トークンの有効性チェック 
受信されたトークンリソースサービスを、公開鍵の正当性は、トークンを検証するために使用されます。 
5 、トークンが有効で、リソース情報に応じて、クライアントへの資源サービス 
3.3.4.2  リソースサービスの認証の設定 
、実質的にすべてのサービスのは、制御する許可を使用して設定コース管理サービス、上の我々のconfigureの認可制御マイクロ資源サービス、ありますアクセスはもちろん信じている情報は、あなたがトークンを提供する必要があります。
1 、公開鍵の設定 
公開鍵サービスのリソース外にトークンサービス認証を生成するための秘密鍵を使用して、非対称暗号化アルゴリズムを使用してトークン認証サービスの生成、リソースが可能にトークンを検証するために使用される公開鍵の正当性を。
公開鍵をコピー  publickey.txt ファイルを、リソースサービスプロジェクトにこのファイルをコピーし、クラスパスの下の 

 
2 、依存関係を追加

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring‐cloud‐starter‐oauth2</artifactId>
</dependency>

4 、中confifig パッケージの下に作成ResourceServerConfifigのカテゴリ:

@Configuration
@EnableResourceServer
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)//激活方法上的
PreAuthorize注解
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
//公钥
private static final String PUBLIC_KEY = "publickey.txt";
//定义JwtTokenStore,使用jwt令牌
@Bean
public TokenStore tokenStore(JwtAccessTokenConverter jwtAccessTokenConverter) {
return new JwtTokenStore(jwtAccessTokenConverter);
}
//定义JJwtAccessTokenConverter,使用jwt令牌
@Bean
public JwtAccessTokenConverter jwtAccessTokenConverter() {
JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
converter.setVerifierKey(getPubKey());
return converter;
}
/**
* 获取非对称加密公钥 Key
* @return 公钥 Key
*/
private String getPubKey() {
Resource resource = new ClassPathResource(PUBLIC_KEY);
try {
InputStreamReader inputStreamReader = new
InputStreamReader(resource.getInputStream());
BufferedReader br = new BufferedReader(inputStreamReader);
return br.lines().collect(Collectors.joining("\n"));
} catch (IOException ioe) {
return null;
}
}
//Http安全配置,对每个到达系统的http请求链接进行校验
@Override
public void configure(HttpSecurity http) throws Exception {
//所有请求必须认证通过
http.authorizeRequests().anyRequest().authenticated();
}
}

3.3.4.3  テストライセンスリソースサービス 
私たちは、テスト画像検索のコースは、// localhostを:31200 /もちろん、HTTP / coursepic /リスト/ 4028e58161bd3b380161bd3bcd2f0000
トークン要求が指定されている運ばないし。 

{
"error": "unauthorized",
"error_description": "Full authentication is required to access this resource"
}

请求时携带令牌: 
http header中添加 Authorization: Bearer 令牌
 

3.3.4.4 解决swagger-ui无法访问 
当课程管理加了授权之后再访问swagger-ui则报错:

 
修改授权配置类ResourceServerConfifigconfifigure方法: 
针对swagger-ui的请求路径进行放行:

//Http安全配置,对每个到达系统的http请求链接进行校验
@Override
public void configure(HttpSecurity http) throws Exception {
//所有请求必须认证通过
http.authorizeRequests()
//下边的路径放行
.antMatchers("/v2/api‐docs", "/swagger‐resources/configuration/ui",
"/swagger‐resources","/swagger‐resources/configuration/security",
"/swagger‐ui.html","/webjars/**").permitAll()
.anyRequest().authenticated();
}

注意: 
通过上边的配置虽然可以访问swagger-ui,但是无法进行单元测试,除非去掉认证的配置或在上边配置中添加所有 
请求均放行("/**")。 

发布了835 篇原创文章 · 获赞 152 · 访问量 14万+

おすすめ

転載: blog.csdn.net/qq_40208605/article/details/104207451