<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class="">The self-issued IdP model isn’t documented, but one of my clients is using the model for Native App SSO for their apps.</div><div class=""><br class=""></div>The basic sequence is described in the attacked image.<div class=""><br class=""><div class="">You can also see the actual working app here.</div><div class=""><a href="https://apps.apple.com/us/app/ホットペッパービューティー-サロン予約/id385724144" class="">https://apps.apple.com/us/app/%E3%83%9B%E3%83%83%E3%83%88%E3%83%9A%E3%83%83%E3%83%91%E3%83%BC%E3%83%93%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%BC-%E3%82%B5%E3%83%AD%E3%83%B3%E4%BA%88%E7%B4%84/id385724144</a></div><div class=""><br class=""></div><div class="">Above app is a OIDC client of the server-side IdP, but also an client-side IdP of the server-side IdP.<br class=""><div class=""><br class=""></div><div class="">The user have a key pair on the client side, and when the user is logging into the server side, the server delegates the actual authentication to the client side again.</div><div class=""><br class=""></div>It is very similar to FIDO / WebAuthN model, so I feel it’s natural.</div><div class="">(once you get WebAuthN on iOS, you won’t need self-issued IdP for this purpose anymore though)</div><div class=""><br class=""></div><div class="">Basically, almost all Native App SSO let client app authenticate user to the server side in some way, so that those technique would be hint for your case too.</div><div class=""><br class=""></div><div class=""><br class=""><div><img apple-inline="yes" id="F629D045-A4FD-4E0A-9E9B-EF4A14387E97" src="cid:1685B8EF-6E88-42A5-BC86-6592331D1010" class=""></div><div><br class=""><blockquote type="cite" class=""><div class="">On Oct 4, 2019, at 2:21, Joseph Heenan <<a href="mailto:joseph@authlete.com" class="">joseph@authlete.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Hi Nov,<br class=""><br class="">Replies inline:<br class=""><br class=""><blockquote type="cite" class="">On 3 Oct 2019, at 14:15, nov matake <<a href="mailto:nov@matake.jp" class="">nov@matake.jp</a>> wrote:<br class=""><br class="">My use-case isn't app2app, but it's making the mobile apps the self-issued IdP for the backend IdP.<br class=""><br class="">In that case, the first logged-in app registers a public key to the backend IdP server. After that, when following app send AuthZ request to the server, the server returns another AuthZ request to the app itself. Then the app authenticate user via TouchID etc and acts as self-issued IdP against the backend. Receiving self-issued ID Token, backend IdP authenticates the user and issue code.<br class=""><br class="">If the app can acts as IdP of the backend IdP, you won't need vendor-specific way to issue code.<br class=""></blockquote><br class="">I'm quite interested in this. Is this chaining of a self-issued iDP to a backend iDP an already defined protocol I can read more about somewhere?<br class=""><br class="">I'm not sure if it would be the most natural way to do it; the first party app (the bank app) is generally also an oauth client of the backend idp, and the approaches I've seen so far for app2app leverage that existing client relationship. Sadly I'm not aware of anyone that's publicly documented how their implementation of the first party app interacts with the iDP to implement the app2app case.<br class=""><br class=""><blockquote type="cite" class="">I think George has another way in his native app SSO draft.<br class=""></blockquote><br class="">I don't yet fully understand George's draft, but it only works where the apps are from the same company, so it does not help in the general app2app scenario (where the apps are from different companies) as far as I know.<br class=""><br class="">Thanks<br class=""><br class="">Joseph<br class=""><br class=""></div></div></blockquote></div><br class=""></div></div></body></html>