質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

Q&A

解決済

1回答

572閲覧

iosアプリからAzureサーバー(SSOあり)へのアクセス

matsu3

総合スコア2

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

0グッド

0クリップ

投稿2022/02/14 08:15

iosアプリからAzure(AD)で構築されたサーバー(SSOあり)環境へのアクセス

現在、swiftを用いてローカル環境(PCーwifi-iPhone)でhttp通信のやり取りを行うiosアプリを開発しています。

この度、ローカルの環境からサーバー部分をAzureのサーバー環境に移行してSSO(シングルサインオン)機能をつけて運用することになりました。

現状のアプリの通信の仕様だとAzureの環境へ移行するとおそらく認証部分で通信が弾かれてしまい
サーバとiPhone間のデータのやり取りが出来なくなると予測されます。

現状の通信方法を流用してiosアプリでSSOが設定されたAzureサーバにアクセスする方法が分かりましたらご教授いただきたいです。

現状iosアプリの通信サンプル

class ViewController: UIViewController { @IBAction func sendbtn(_ sender: Any) { // ボタンが押されたら var responseStatusCode:String = "" if let path1 = path1txf.text, let path2 = path2txf.text, let path3 = path3txf.text { let strUrl = path1 + path2 + path3 //例:http://xxx.xxx.xxx.xxx/yyyy/zzz.php let myUrl = URL(string:strUrl)! let req = NSMutableURLRequest(url: myUrl) req.cachePolicy = .reloadIgnoringLocalCacheData req.httpMethod = "GET" let myHttpSession = HttpClientImpl() let (data, response, error) = myHttpSession.execute(request: req as URLRequest) if let response = response as? HTTPURLResponse { responseStatusCode = String(response.statusCode) } else { print(error?.code) } if data != nil { // 受け取ったデータに対する処理 let strData: String? = String(data: data! as Data, encoding: .utf8) if let strData = strData{ //print("strData:" + strData) if(strData != ""){ // 戻り値あり textviewにそのまま表示 returntxv.text = strData } else { returntxv.text = responseStatusCode + ":" + "戻り値が空" } } else { returntxv.text = responseStatusCode + ":" + "不明な戻り値1" } } else { returntxv.text = responseStatusCode + ":" + "不明な戻り値2" } } } } let _HTTP_TIMEOUT:TimeInterval = 30 public class HttpClientImpl { private let session: URLSession public init(config: URLSessionConfiguration? = nil) { config?.timeoutIntervalForRequest = _HTTP_TIMEOUT config?.requestCachePolicy = NSURLRequest.CachePolicy.reloadIgnoringLocalCacheData self.session = config.map { URLSession(configuration: $0) } ?? URLSession.shared } public func execute(request: URLRequest) -> (NSData?, URLResponse?, NSError?) { var d: NSData? = nil var r: URLResponse? = nil var e: NSError? = nil let semaphore = DispatchSemaphore(value: 0) session .dataTask(with: request) { (data, response, error) -> Void in d = data as NSData? r = response e = error as NSError? semaphore.signal() } .resume() _ = semaphore.wait(timeout: DispatchTime.distantFuture) return (d, r, e) } var sd:NSData? = nil var sr: URLResponse? = nil var se: NSError? = nil public func execute2(request: URLRequest) -> (NSData?, URLResponse?, NSError?) { let semaphore = DispatchSemaphore(value: 0) session .dataTask(with: request) { (data, response, error) -> Void in self.sd = data as NSData? self.sr = response self.se = error as NSError? semaphore.signal() } .resume() _ = semaphore.wait(timeout: DispatchTime.distantFuture) return (sd, sr, se) } }

試したこと

・上記の通信でSSOの設定がないAzureサーバからリターン値を取れることは確認ずみ

https://docs.microsoft.com/ja-jp/graph/tutorials/ios-swift
を参照に
iosアプリがサインインした状態であれば通信が通るのかと思い「Add Azure AD authentication」の
Add sign-in and sign-outの部分まで作ってみたのですが、
(テスト用のサーバー環境がまだ出来ていないのでAuthSettings.plist.のAppIdは未設定です。)
アプリのサインイン機能と上記サンプルの通信が通るのは別問題な気がしてきており、
通信を通すための情報をいただきたいです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

AzureAD認証をSwiftに組み込む方法はご提示のURLの方法で良いと思います。
一方で以下のサーバー移行先(Azureのサーバー環境とは?)を先に整理したほうが良いと思います。

サーバー部分をAzureのサーバー環境に移行

もし移行先のサーバーがAzure App Serviceであれば以下のようにAzureAD機能を有効化すれば通信できると思います。
https://docs.microsoft.com/ja-jp/azure/app-service/configure-authentication-provider-aad

  • クライアントプログラムにAzureAD認証を組み込む
  • サーバープログラムでAzureAD認証を有効化する

上記2点に取り組んでみてください。

投稿2022/03/17 12:39

Tak1wa

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

matsu3

2022/03/23 01:08

回答ありがとうございます。 本件状況が変わってしまい一旦質問を終わらせていただきます。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問