Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sign in with Apple ~ diff from OIDC / OAuth 2.0 & characteristic identifiers design ~ - #idcon vol.27

Sign in with Apple ~ diff from OIDC / OAuth 2.0 & characteristic identifiers design ~ - #idcon vol.27

Nov Matake

August 02, 2019
Tweet

More Decks by Nov Matake

Other Decks in Technology

Transcript

  1. # i d c o n v o l .

    2 7 - S i g n i n w i t h A p p l e 特集 ※ ヤフースコアのことは禁句な!! h t t p s : / / i d c o n . o r g
  2. S i g n i n w i t h

    A p p l e ~ d i f f f r o m O I D C / O A u t h 2 . 0 & c h a r a c t e r i s t i c i d e n t i f i e r s d e s i g n ~ @ n o v
  3. h t t p s : / / m a

    t a k e . j p
  4. h t t p s : / / r u

    b y g e m s . o r g / g e m s / a p p l e _ i d
  5. h t t p s : / / s i

    g n i n - w i t h - a p p l e . h e r o k u a p p . c o m
  6. D i f f f r o m O I

    D C / O A u t h 2 . 0
  7. O I D C S p e c V i

    o l a t i o n s ❖ w h e n n o n c e i s p r o v i d e d i n t h e c o d e o r c o d e i d _ t o k e n g r a n t t y p e s , i t w o n ’ t b e i n c l u d e d i n t h e i d _ t o k e n r e t u r n e d # F I X E D ❖ t h e c o d e i d _ t o k e n r e s p o n s e t y p e d o e s n o t i n c l u d e c _ h a s h i n t h e r e t u r n e d i d _ t o k e n # F I X E D ❖ t h e c o d e i d _ t o k e n r e s p o n s e t y p e r e t u r n s t h e r e s p o n s e p a r a m e t e r s a s q u e r y p a r a m e t e r s , n o t i n t h e f r a g m e n t ❖ p r o v i d i n g a p r o m p t p a r a m e t e r w i t h a n y v a l u e ( e . g . l o g i n o r c o n s e n t ) o r e m p t y r e s u l t s i n a 4 0 0 w i t h n o b o d y # F I X E D ❖ w h e n m a x _ a g e i s r e q u e s t e d , t h e i d _ t o k e n d o e s n o t i n c l u d e a n a u t h _ t i m e c l a i m # F I X E D h t t p : / / b i t . l y / d i f f - b e t w e e n - s i w a - a n d - o i d c
  8. P e c u l i a r i t

    i e s ( 奇妙な点 ) ❖ n o D i s c o v e r y d o c u m e n t i s p u b l i s h e d a t h t t p s : / / a p p l e i d . a p p l e . c o m / . w e l l - k n o w n / o p e n i d - c o n f i g u r a t i o n w h i c h m a k e s d e v e l o p e r s h a v e t o r e a d t h r o u g h t h e A p p l e d o c s t o f i n d o u t a b o u t e n d p o i n t s , s c o p e s , s i g n i n g a l g o r i t h m s , a u t h e n t i c a t i o n m e t h o d s , e t c . # F E E L S - O K ❖ n o U s e r I n f o e n d p o i n t i s p r o v i d e d w h i c h m e a n s a l l o f t h e c l a i m s a b o u t u s e r s h a v e t o b e i n c l u d e d i n t h e ( e x p i r i n g a n d p o t e n t i a l l y l a r g e ) i d _ t o k e n ❖ d o e s n o t i n c l u d e d i f f e r e n t c l a i m s i n t h e i d _ t o k e n b a s e d o n s c o p e # P A R T I A L L Y - F I X E D ❖ t h e t o k e n e n d p o i n t d o e s n o t a c c e p t c l i e n t _ s e c r e t _ b a s i c a s a u t h e n t i c a t i o n m e t h o d ( r e q u i r e d f o r O p e n I D C o n n e c t c e r t i f i c a t i o n ) a n d a c t u a l l y t h e d e f a u l t m e t h o d t o u s e f o r C l i e n t s w h e n t h e r e ’ s n o D i s c o v e r y d o c u m e n t t h a t s a y s o t h e r w i s e h t t p : / / b i t . l y / d i f f - b e t w e e n - s i w a - a n d - o i d c
  9. P e c u l i a r i t

    i e s ( 奇妙な点 ) ❖ a u t h e n t i c a t i o n t o w a r d s t h e t o k e n e n d p o i n t r e q u i r e s a ( c u s t o m ) J W T a s s e r t i o n a s a c l i e n t _ s e c r e t i n a c l i e n t _ s e c r e t _ p o s t a u t h e n t i c a t i o n m e t h o d w h e r e a s t h e m o r e a p p r o p r i a t e p r i v a t e _ k e y _ j w t a u t h e n t i c a t i o n m e t h o d a s d e f i n e d i n R F C 7 5 2 3 c o u l d h a v e b e e n u s e d ❖ u s i n g u n s u p p o r t e d o r w r o n g p a r a m e t e r s ( e . g . n o n - e x i s t i n g r e s p o n s e _ t y p e , s c o p e , c l i e n t _ i d , o r r e d i r e c t _ u r i ) a l w a y s r e s u l t s i n t h e s a m e m e s s a g e i n t h e b r o w s e r t h a t s a y s “ Y o u r r e q u e s t c o u l d n o t b e c o m p l e t e d b e c a u s e o f a n e r r o r . P l e a s e t r y a g a i n l a t e r . ” w i t h o u t a n y e x p l a n a t i o n a b o u t w h a t h a p p e n e d , w h y t h i s i s a n e r r o r o r h o w t o f i x i t # F E E L S - O K # E X C E P T - F O R - S C O P E ❖ e x c h a n g i n g t h e a u t h o r i z a t i o n c o d e a c c o r d i n g t o h t t p s : / / d e v e l o p e r . a p p l e . c o m / d o c u m e n t a t i o n / s i g n i n w i t h a p p l e r e s t a p i / g e n e r a t e _ a n d _ v a l i d a t e _ t o k e n s s h o u l d p r e s e n t a n o n - s t a n d a r d g r a n t _ t y p e = a u t h o r i z a t i o n _ t o k e n b u t u s i n g t h e s t a n d a r d s - c o m p l i a n t g r a n t _ t y p e = a u t h o r i z a t i o n _ c o d e a c t u a l l y w o r k s w h e r e a s t h e f o r m e r d o e s n o t , s o t h e d o c u m e n t a t i o n i s i n c o r r e c t # F I X E D h t t p : / / b i t . l y / d i f f - b e t w e e n - s i w a - a n d - o i d c
  10. P e c u l i a r i t

    i e s ( 奇妙な点 ) ❖ t h e A u t h o r i z a t i o n C o d e g r a n t t y p e ( f o r p u b l i c C l i e n t s ? ) d o e s n o t u s e P K C E t o a v o i d c o d e i n j e c t i o n a n d c o d e r e p l a y a t t a c k s # F E E L S - O K ❖ w h e n u s i n g t h e s a m p l e a p p a v a i l a b l e a t h t t p s : / / g i t h u b . c o m / a a r o n p k / s i g n - i n - w i t h - a p p l e - e x a m p l e , a d d i n g o p e n i d a s a s c o p e l e a d s t o a n e r r o r m e s s a g e a n d i t w o r k s j u s t w i t h n a m e a n d e m a i l a s s c o p e v a l u e s ; t h i s b e h a v i o r s e e m s t o b e i n c o n s i s t e n t a c r o s s C l i e n t s : f o r s o m e i t w o r k s , o r a t l e a s t d o e s n o t l e a d t o e r r o r s , f o r o t h e r s i t d o e s n o t w o r k a n d e n d s w i t h a n e r r o r # F I X E D ? ❖ T h e s c o p e v a l u e o f o n l y t h e v e r y f i r s t r e q u e s t b y a n a p p l i c a t i o n i s r e s p e c t e d . I f a n a p p l i c a t i o n i n i t i a l l y r e q u e s t s o n l y t h e n a m e s c o p e , a n d t h e u s e r a l l o w s i t , i t i s t h e n i m p o s s i b l e t o l a t e r a l s o r e q u e s t t h e e m a i l s c o p e . h t t p : / / b i t . l y / d i f f - b e t w e e n - s i w a - a n d - o i d c
  11. C h a r a c t e r i

    s t i c I d e n t i f i e r s D e s i g n
  12. T e a m X P r i m a

    r y A p p A S e r v i c e A - 1
  13. T e a m X P r i m a

    r y A p p A A p p A - 3 A p p A - 2 A p p A - 1 S e r v i c e A - 1 S e r v i c e A - 2
  14. T e a m X P r i m a

    r y A p p A A p p A - 3 A p p A - 2 A p p A - 1 S e r v i c e A - 1 S e r v i c e A - 2 P r i m a r y A p p B A p p B - 2 A p p B - 1 S e r v i c e B - 1
  15. U s e r - r e l a t

    e d I d e n t i f i e r s D e s i g n
  16. U s e r I D ( s u b

    ) T e a m X P r i m a r y A p p A A p p A - 3 A p p A - 2 A p p A - 1 S e r v i c e A - 1 S e r v i c e A - 2 P r i m a r y A p p B A p p B - 2 A p p B - 1 S e r v i c e B - 1
  17. P r i v a t e E m a

    i l T e a m X P r i m a r y A p p A A p p A - 3 A p p A - 2 A p p A - 1 S e r v i c e A - 1 S e r v i c e A - 2 P r i m a r y A p p B A p p B - 2 A p p B - 1 S e r v i c e B - 1
  18. U s e r I D : A p p

    l e U s e r I D : P u b l i c E m a i l s : P r i v a t e E m a i l : 1 2 3 4 5 0 0 0 1 2 3 . a b c 2 x y z . 0 0 1 2 f o o @ i c l o u d . c o m f o o @ m e . c o m f o r - t e a m - x @ p r i v a t e r e l a y . a p p l e i d . c o m Q 1 . W h i c h a d d r e s s t o u s e i n e a c h a p p ’ s c o n t e x t ? Q 2 . H o w t o h a n d l e e m a i l c h a n g e s a f t e r r e v o c a t i o n ?
  19. C o n s e n t S c r

    e e n T e a m X P r i m a r y A p p A A p p A - 3 A p p A - 2 A p p A - 1 S e r v i c e A - 1 S e r v i c e A - 2 P r i m a r y A p p B A p p B - 2 A p p B - 1 S e r v i c e B - 1
  20. R e v o c a t i o n

    S c r e e n T e a m X P r i m a r y A p p A A p p A - 3 A p p A - 2 A p p A - 1 S e r v i c e A - 1 S e r v i c e A - 2 P r i m a r y A p p B A p p B - 2 A p p B - 1 S e r v i c e B - 1
  21. C a r e f u l b r a

    n d i n g s t r a t e g y r e q u i r e d f o r p r i m a r y a p p g r o u p i n g
  22. D e v e l o p e r -

    r e l a t e d I d e n t i f i e r s D e s i g n
  23. C l i e n t I D T e

    a m X P r i m a r y A p p A A p p A - 3 A p p A - 2 A p p A - 1 S e r v i c e A - 1 S e r v i c e A - 2 P r i m a r y A p p B A p p B - 2 A p p B - 1 S e r v i c e B - 1
  24. P r i v a t e K e y

    T e a m X P r i m a r y A p p A A p p A - 3 A p p A - 2 A p p A - 1 S e r v i c e A - 1 S e r v i c e A - 2 P r i m a r y A p p B A p p B - 2 A p p B - 1 S e r v i c e B - 1
  25. C L I E N T _ I D i

    s o f t h e a p p / s e r v i c e w h i c h o r i g i n a l l y r e c e i v e d t h e a u t h o r i z a t i o n c o d e , n o t o f t h e b a c k e n d s e r v e r w h i c h a c c e s s e s t h e t o k e n e n d p o i n t , e v e n w h e n r e f r e s h i n g t o k e n s .
  26. P r i v a t e E m a

    i l R e l a y S e r v i c e T e a m X P r i m a r y A p p A A p p A - 3 A p p A - 2 A p p A - 1 S e r v i c e A - 1 S e r v i c e A - 2 P r i m a r y A p p B A p p B - 2 A p p B - 1 S e r v i c e B - 1
  27. F o r t h e 1 1 t h

    d o m a i n / a d d r e s s , s e t u p n e w t e a m ! ? ! ? P r i m a r y A p p A s e n d s e m a i l s f r o m A p p A - 1 s e n d s e m a i l s f r o m A p p A - 2 s e n d s e m a i l s f r o m S e r v i c e A - 1 s e n d s e m a i l s f r o m n o - r e p l y @ p r i m a r y - a p p - a . e x a m p l e . c o m n o - r e p l y @ a p p - a 1 . e x a m p l e . c o m n o - r e p l y @ a p p - a 2 . e x a m p l e . c o m n o - r e p l y @ s e r v i c e - a 1 . e x a m p l e . c o m :
  28. S e r v e r t o S e

    r v e r N o t i f i c a t i o n E n d p o i n t T e a m X P r i m a r y A p p A A p p A - 3 A p p A - 2 A p p A - 1 S e r v i c e A - 1 S e r v i c e A - 2 P r i m a r y A p p B A p p B - 2 A p p B - 1 S e r v i c e B - 1
  29. 【結論】 i O S , i P a d O

    S , S a f a r i での U X は最高だが クセが強いので注意