参考になるページや、ソース例などご教示いただきたく思います。
すみません、実際に使ったことはないのですが・・
GitHubのREADMEにフローなどが記載されているみたいでした。
Auth Flow
https://github.com/openid/AppAuth-iOS/blob/6f48321e04ca3ad6417717246f085dc73d307369/README.md#auth-flow
AppAuthの設定をして(authorizationEndpointなど)、
UIApplicationDelegateに準拠するようにして、
認証の状態を保存するためのプロパティ(OIDAuthState型)を実装して、
それから、
Then, initiate the authorization request. By using the authStateByPresentingAuthorizationRequest convenience method, the token exchange will be performed automatically, and everything will be protected with PKCE (if the server supports it). AppAuth also lets you perform these requests manually. See the authNoCodeExchange method in the included Example app for a demonstration:
その後、認証リクエストを開始します。authStateByPresentingAuthorizationRequest コンビニエンスメソッドを使用すると、トークン交換が自動的に行われ、すべてがPKCEで保護されます (サーバーがサポートしている場合)。AppAuth では、これらのリクエストを手動で実行することもできます。付属のExampleアプリのauthNoCodeExchangeメソッドで、そのデモをご覧ください。
https://github.com/openid/AppAuth-iOS/blob/6f48321e04ca3ad6417717246f085dc73d307369/README.md#authorizing-ios
OIDAuthorizationRequestのインスタンスを生成して、
Swiftの場合は
OIDAuthState.authState(byPresenting: request, presenting: self) { authState, error in ... }
のような感じで記述するとトークン交換が自動的に行われるみたいです。
Exampleも見てみると良いかもしれません。
https://github.com/openid/AppAuth-iOS/blob/master/Examples/Example-iOS_Swift-Carthage/Source/AppAuthExampleViewController.swift#L370
PKCEについて次のリンクも見てみました。
https://qiita.com/TakahikoKawasaki/items/00f333c72ed96c4da659
コメントありがとうございます。
追記です。
先に書いておくべきでしたが、一応Readmeに目は通しているのですが、
そうだったのですね、あまり知らないのに回答してしまってすみません・・
Exampleは関係なさそうなコードも含まれてしまっているみたいですが、
Exampleのリンク先の370行目、
func doAuthWithAutoCodeExchange(configuration: OIDServiceConfiguration, clientID: String, clientSecret: String?) {
このあたり(呼び出しもなども)を見てみると良いかもしれません。
READMEを見る感じでは、
「トークン交換が自動的に行われ」と記載されていますので、
code_challengeとcode_verifierなどを意識しなくても
OIDAuthState.authState(byPresenting:presenting:)
メソッドに任せておくだけで大丈夫なのかなと思いました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/19 03:51
2022/06/19 04:19 編集