質問編集履歴

2

質問内容を整理

2016/05/25 17:12

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- oauth2のプログラムフローにつきまして
1
+ oAuth2の実装につきまして
test CHANGED
@@ -1,48 +1,50 @@
1
1
  いつも大変お世話になっております。
2
-
3
- 以下のような流れのoAuth2を使ったシステムを作っています。
4
2
 
5
3
 
6
4
 
7
- (1)A君がアプリBサイト内のリンククリックするとアプリAサイトに遷移する。
5
+ oAuth2使うシステムを作っていて
8
6
 
9
- アプリAはアプリBにoAuth2をし、
7
+ 下記の〜(4)の動作の一連の実装&検証済みですが
10
8
 
11
- A君ID/PWでプリBサイトにログイン&利用権限を与え
9
+ (3)において、10秒でなく、1日後にクセスした場合、
12
10
 
13
- アプリAは、サトBで発行されたアクセストークンを元に、
11
+ 再度ID/PWのログン画面が表示されてしまいます。
14
12
 
15
- アプリBデータを取得し、そを元レポート作成す。
13
+ ログインID/PWが表示さないようにしたいのです。
16
14
 
17
15
 
18
16
 
19
- (3)1日など間隔をおいて、A君はふたたび(1)と同じくGETリンククリック
17
+ '-----------------------------------------
20
18
 
21
- (2)で権限をもらっているので、サイトBにログイID/PWつかってログンすることなく、
19
+ A君がサイトB内のリクリック。サトAに遷移。
22
20
 
21
+ (2)サイトAは、サイトBにoAuth2リクエストをします。
22
+
23
+ サイトBのログイン画面が表示されるので、
24
+
23
- A君は、アクセスークン元に認証してデータ取得する流れ実現したす。
25
+ サイBのID/PW入力。その後、権限付与許可す。
26
+
27
+ サイトAは、上記で発行されたアクセストークンを元に、
28
+
29
+ サイトBのデータを取得し、それを元にレポート作成します。
24
30
 
25
31
 
26
32
 
27
- 上記を実現に際し、不明なのが、(3)で1日ではなく、10秒後なすぐに再度アセスした場合、
33
+ (3)0秒間隔をおいて、A君はふたたび(1)と同じリンクリック
28
34
 
29
- サイトBは、どうやら、ID/PWを認証画面を表示せず、authorization_codeを返しくれることがわかりました
35
+ (4)(2)で権限をもっているのでログインID/PWをつかっログインすることなく、レポート作成される
36
+
37
+ '-----------------------------------------
30
38
 
31
39
 
32
40
 
33
- ただ、(3)で1日おいたとすると、再度ID/PWのログイン画面が表示されてしまいます。
34
-
35
- このログインID/PWが表示されないようにしたいのですが、
36
-
37
- リフレッシュトークンをつかって、トークンを最新化することで、ID/PWが表示されないように
38
-
39
- できる形にないますでしょうか。
40
41
 
41
42
 
42
43
 
43
- https://github.com/thephpleague/oauth2-clientに記載の
44
44
 
45
- 以下のコード(フロー)ベースで開発していますが、
45
+ ソースは、[https://github.com/thephpleague/oauth2-client](https://github.com/thephpleague/oauth2-client)のコードを使っていますが、どの部分を改修すればよいでしょうか。
46
+
47
+
46
48
 
47
49
  ```
48
50
 
@@ -186,88 +188,8 @@
186
188
 
187
189
  ```
188
190
 
189
- 1点目の質問は、リフレッシュするコードはどこに、どのように差し込めばよろしいでしょうか。
190
-
191
-
192
-
193
- また、リフレッシュトークンの取得は、前述githubの以下のコード記載部分で、
194
-
195
- 「自身のDBにアクセスして、アクセストークンを取得し、
196
-
197
- 有効期限をチェック、有効期限がきれていたら、
198
-
199
- リフレッシュトークンを元に、新しいアクセストークンを取得します」
200
-
201
- というような記載がありました。
202
-
203
- ````
204
-
205
- $existingAccessToken = getAccessTokenFromYourDataStore();
206
-
207
-
208
-
209
- if ($existingAccessToken->hasExpired()) {
210
-
211
- $newAccessToken = $provider->getAccessToken('refresh_token', [
212
-
213
- 'refresh_token' => $existingAccessToken->getRefreshToken()
214
-
215
- ]);
216
-
217
-
218
-
219
- // Purge old access token and store new access token to your data store.
220
-
221
- }
222
-
223
- ```
224
-
225
-
226
-
227
- ここで、また2点不明点あります。
228
-
229
-
230
-
231
- 1点目は、自身のデータストアからアクセストークンを取得しますが、
232
-
233
- A君である、キーとなる情報が、アプリAのサイトでは管理していないのと、
234
-
235
- (1)または(3)でクリックされたGETには存在しないので
236
-
237
- どのユーザかわかるのは、以下の時点になるかと思います。
238
-
239
- ```
240
-
241
- $resourceOwner = $provider->getResourceOwner($accessToken);
242
-
243
- ```
244
-
245
- ただ、この時点では、ID/PW認証が表示されてしまいますので、これより前でリフレッシュやる必要があるかと思います。
246
-
247
-
248
-
249
- 認証後、2回めからは、ログインID/PWが表示されないようできるシステムがありますが、
250
-
251
- それと同じようにするには、上記のコードをどうしたらよいでしょうか。。。
252
191
 
253
192
 
254
193
 
255
194
 
256
-
257
- 2点目は、自身のデータストアからアクセストークンを取得するとありますが、
258
-
259
- アクセストークンの保存、または復元ですが、
260
-
261
- アクセストークンオブジェクトをまるごとphpでシリアライズして保存して、
262
-
263
- 復元は、それをデシリアライズで実装となるになりますでしょうか。
264
-
265
- それとも、アクセストークンとリフレッシュトークンと有効期限それぞれを
266
-
267
- DBにもたせる形になりますでしょうか。
268
-
269
- 前者につきましてそういったことがPHP仕様的に可能なのでしょうか。
270
-
271
-
272
-
273
195
  お手数をお掛けしますが、何卒、よろしくお願い致します。

1

文言一部修正

2016/05/25 17:12

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -186,13 +186,19 @@
186
186
 
187
187
  ```
188
188
 
189
- リフレッシュするコードはどこに、どのように差し込めばよろしいでしょうか。
189
+ 1点目の質問は、リフレッシュするコードはどこに、どのように差し込めばよろしいでしょうか。
190
-
191
-
192
-
190
+
191
+
192
+
193
- また、以下のコードで、リフレッシュトークンは、あなたDB等にアクセストクンを取得し
193
+ また、リフレッシュトークンの取得は、前述github以下のコド記載部分で
194
+
194
-
195
+ 「自身のDBにアクセスして、アクセストークンを取得し、
196
+
197
+ 有効期限をチェック、有効期限がきれていたら、
198
+
195
- そこにあるリフレッシュトークンを元に、新しいアクセストークンを取得しますというような記載がありました。
199
+ リフレッシュトークンを元に、新しいアクセストークンを取得します
200
+
201
+ というような記載がありました。
196
202
 
197
203
  ````
198
204
 
@@ -218,9 +224,15 @@
218
224
 
219
225
 
220
226
 
227
+ ここで、また2点不明点あります。
228
+
229
+
230
+
221
- ここでもうひとつ不明なのが、自身のDBにアクセストークンを取得しにいく際
231
+ 1点目は、自身のデータストからアクセストークンを取得しますが
232
+
222
-
233
+ A君である、キーとなる情報が、アプリAのサイトでは管理していないのと、
234
+
223
- 自身のキーとなる情報が、(1)または(3)でクリックされた時点では存在せず
235
+ (1)または(3)でクリックされたGETには存在しないので
224
236
 
225
237
  どのユーザかわかるのは、以下の時点になるかと思います。
226
238
 
@@ -230,13 +242,31 @@
230
242
 
231
243
  ```
232
244
 
233
-
234
-
235
- しかしながら、認証2回めらは、
245
+ ただこの時点では、ID/PW認証が表示されてしまいますのでこれより前でリフレッシュやる必要があると思います。
236
-
246
+
247
+
248
+
237
- ログインID/PWが表示されないようできるシステムがありますが、
249
+ 認証後、2回めからは、ログインID/PWが表示されないようできるシステムがありますが、
238
-
250
+
239
- それと同じようにするには、部分をどうしたらよいでしょうか。。。
251
+ それと同じようにするには、上記コードをどうしたらよいでしょうか。。。
252
+
253
+
254
+
255
+
256
+
257
+ 2点目は、自身のデータストアからアクセストークンを取得するとありますが、
258
+
259
+ アクセストークンの保存、または復元ですが、
260
+
261
+ アクセストークンオブジェクトをまるごとphpでシリアライズして保存して、
262
+
263
+ 復元は、それをデシリアライズで実装となるになりますでしょうか。
264
+
265
+ それとも、アクセストークンとリフレッシュトークンと有効期限それぞれを
266
+
267
+ DBにもたせる形になりますでしょうか。
268
+
269
+ 前者につきましてそういったことがPHP仕様的に可能なのでしょうか。
240
270
 
241
271
 
242
272