ソフトブレーン・インテグレーション株式会社
iPhoneやiPadなどのスマートデバイス導入コンサルティング
​ソフトブレーン・インテグレーション株式会社 

​お問い合わせ: 03-6892-1180(平日9:00~17:30)
  • ホーム
  • トピックス
  • サービス案内
    • Jamf >
      • Jamf Pro
      • Jamf Now
      • Jamf Now リモート導入支援
      • [Jamf×Mac] オフィス内の管理されていないMacが企業に脅威をもたらす
      • Jamf Protect
      • Jamf Connect
    • iOS ビジネスコネクト >
      • スマートフォン導入支援サービス
      • iPhone/iPad/Macキッティング
    • AMC (Advanced Mobile Center)
    • Ivanti Neurons for MDM >
      • ACCESS / SENTRY
      • Threat Defense
      • UEM
    • Zoom (Web会議システム)
    • Okta (ID管理クラウドサービス)
    • RemoteOperator Helpdesk
    • iOS 教育サービス >
      • iOS アーキテクチャ講習会
      • iOS ユーザー向け講習会
  • 会社案内
    • 会社概要
    • ご挨拶
    • 企業理念
    • 所在地
    • 採用情報
  • ブログ
  • お問い合せ

JamfPro API のユーザ認証方式の変更に備えよう

4/15/2022

0 コメント

 

JamfPro API のユーザ認証の変更に備えよう

2022年の8月~12月に API のユーザ認証で Basic 認証が廃止に

画像
JamfPro ギークの皆さんこんにちは!

JamfPro ギークの管理者にとっての1つの腕の見せ所でもありますが、JamfPro API を使って今日もゴリゴリとスクリプト書いたりされていることと思います。

​さて、Jamf Developer サイトによれば今年 2022年の8月~12月のどっかで、Basic 認証が廃止され、OAuth2.0 へ移行されるという記載があることはご存知の通りと思います。

https://developer.jamf.com/jamf-pro/docs/classic-api-authentication-changes

今日は、その認証方式の変更について具体的に書いていこうと思います。

JamfPro API のユーザ認証の変更とは?

気がつけばもう4月ですよね。8月~12月の間ってもう時間が無いじゃないか?!と実は焦った自分でして、そのうちやろうと思ってたらあっという間にQが終わっていたりしたわけですが、繁忙期の3月も過ぎ去りましたので、ちょっと腰を据えて新しい認証についてまとめてみました。

一言で言えば Basic 認証から、Bearer 認証への変更となります。

今までの Basic 認証はユーザIDとパスワードが常に全てのAPIエンドポイントつきまとうものであったのに対し、Bearer 認証は OAuth2.0 Access Token として定義された規格であり、最初の認証によって発行されたアクセストークンを、HTTPヘッダーのスキームの Authentication Bearer として指定することで、一定期間の認証と認可をトークンにまとめることができるようになります。少々大がかりなWebシステムであれば、セッション管理の中でアクセストークンを管理すれば良いので、認証・認可について思い悩む必要はなくなるメリットがある反面、JamfPro でよく使うような単機能スクリプトでは、結局ユーザID,パスワードは使う上に、Bearer アクセストークンも使わないといけないので、少々スクリプトが冗長になる可能性があります。いや、絶対なります。
​
Bearer アクセストークンは発行後、Basic 認証ユーザのアクセス権を持ったアクセスチケットとして json 形式(下記)で戻されます。発行されたタイイングで有効期限(30分)も設定されますが、使い終わったら必ず無効化をしなければならないことに注意してください。ロジック次第ですが、アクセストークンは何らかのタイミングで無効化+再発行しても良いですし、使い方は作り手次第ってところもあります。


{ "token": "eyJhbGciOiJIUzUxMiJ9...", "expires": "2022-01-24T21:35:20.373Z" }

主に使われるBearer 認証APIは以下のようになります。
これから記載するサンプルコードの動作は確認してありますが、動作保証はしませんので自己責任でご利用ください。また、スペースの関係上エラー処理はしておりませんので、戻り値については下記リンクを参照の上、エラー処理を組み込んでいただければと思います。

https://developer.jamf.com/jamf-pro/docs/jamf-pro-api-overview
/api/v1/auth/token ​
POST
Basic認証を用いた Bearer アクセストークンの取得
/api/v1/auth
GET
Bearer アクセストークンの有効性の確認
/api/v1/auth/keep-alive 
POST
Bearer アクセストークンの更新(無効+再発行)
/api/v1/auth/invalidate-token
POST
Bearer アクセストークンの無効化

ケース1: bash スクリプトからの JamfPro API アクセス

よくお目にかかる bash スクリプトです。以下のスクリプトは自Macコンピュータの UDID の MDM Capable User を Jamf に問い合わせて、JamPro 上の拡張属性に返すスクリプトです。


#!/bin/bash udid=$( ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformUUID/{print $3}' | tr -d '"' ) jssurl='/usr/bin/defaults read /Library/Preferences/com.jamfsoftware.jamf.plist jss_url' apiuser="" apipass="" // Basic認証で MDM Capable User を取得します user=$( curl -k -H "Accept: application/xml" -s -u ${apiuser}:${apipass} ${jssurl}JSSResource/computers/udid/${udid} | xmllint --xpath '/computer/general/mdm_capable_users/mdm_capable_user/text()' -) if [ "$user" = "" ]; then echo "<result>Missing</result>" else echo "<result>$user</result>" fi exit 0

今後スクリプトの以下のような形で Bearer アクセストークンを使って API アクセスが必要になります。
結局、スクリプトの中にユーザID、パスワード、Bearer トークンが勢揃いするので何かモヤモヤしますが・・・戻り値は json 形式ですが、パースのために Python モジュールを使っています。


#!/bin/bash udid=$( ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformUUID/{print $3}' | tr -d '"' ) jssurl='/usr/bin/defaults read /Library/Preferences/com.jamfsoftware.jamf.plist jss_url' apiuser="" apipass="" # Bearer トークンを取得します jssapitoken=$( curl -X POST -k -u ${apiuser}:${apipass} -s ${jssurl}api/v1/auth/token -H "Accept: application/json" -H "Accept-Language:ja,en-us;q=0.7,en;q=0.3" | python3 -c "import sys, json; print(json.load(sys.stdin)['token'])" ) // Bearer トークンで MDM Capable User を取得します user=$( curl -k -H "Accept: application/xml" -H "Authorization: Bearer ${jssapitoken}" -s ${jssurl}JSSResource/computers/udid/${udid} | xmllint --xpath '/computer/general/mdm_capable_users/mdm_capable_user/text()' -) // Bearer トークンを無効に res=$( curl -X POST -k -H "Accept: application/json" -H "Authorization: Bearer ${jssapitoken}" -s ${jssurl}api/v1/auth/invalidate-token ) if [ "$user" = "" ]; then echo "<result>Missing</result>" else echo "<result>$user</result>" fi exit 0

bash スクリプトでは json のパースがいまいちスマートさに欠けますね。jq がインストールされてればこんな感じにシンプルに書くこともできます。


# Bearer トークンを取得します jssapitoken=$( curl -X POST -k -u ${apiuser}:${apipass} -s ${jssurl}api/v1/auth/token -H "Accept: application/json" -H "Accept-Language:ja,en-us;q=0.7,en;q=0.3" | jq -r '.token' )

ケース2​: PHP からの JamfPro API アクセス



<?php // $bPost -- TRUE:POST FALSE:GET function curlsession($url,$headers,$bPost,&$res) { $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, $bPost); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $res = curl_exec($ch); var_dump($res); curl_close($ch); } // Barer トークンを取得(POST) $jssurl="https://COPORATE.jamfcloud.com/"; $apiuserpass="apiuser:apipass"; $encodedCredentials = base64_encode($apiuserpass); $headers = array( "Accept: application/json", "Accept-Language:ja,en-us;q=0.7,en;q=0.3", "Authorization: Basic ${encodedCredentials}" ); $url = "${jssurl}api/v1/auth/token"; curlsession($url,$headers,TRUE,$rres); unset($headers); // json を連想配列にセット $tokenarray = json_decode($rres,true); $jamftoken= $tokenarray['token']; // モバイルデバイスの一覧を取得(GET) $headers = array( "Accept: application/json", "Authorization: Bearer ${jamftoken}" ); $url = "${jssurl}JSSResource/mobiledevices"; curlsession($url,$headers,FALSE,$rres); unset($headers); // Bearer トークンを無効に(POST) $headers = array( "Accept: application/json", "Accept-Language:ja,en-us;q=0.7,en;q=0.3", "Authorization: Bearer ${jamftoken}" ); $url = "${jssurl}api/v1/auth/invalidate-token"; curlsession($url,$headers,TRUE,$rres); unset($headers); ?>

まとめ

いかがでしたでしょうか?2022年の8月~12月って何か範囲広って思ってますが、JNUC 2022 でここらへんも明らかになるのかもしれないですね。

なんとなくですが、今後の単機能スクリプトはスクリプト単位に認証するのではなく、認証するためのユーザID,パスワードは base64 エンコードしたものを Mac のどっかの plist にでも入れておいて、それを定期的に別スクリプトでメンテナンスしつつ、その plist から Basic 認証情報をとって Bearer アクセストークンを取得するみたいな流れになるのが綺麗な気がするなぁ。

ま、そんなわけで、皆さんも来る Basic認証廃止の日まで、新しい認証方式へ対応いただけますと幸いです。

​c u !!
当社の「iOS デバイス導入支援サービス」についての詳細はこちらをご覧ください。
0 コメント

JamfPro 緊急メンテナンス中です

4/4/2022

0 コメント

 

JamfPro 緊急メンテナンス中です

画像
Spring Framework のゼロデイ脆弱性対応と、クリティカルな不具合の修正で緊急メンテナンスが行われています。日本のお客様には影響ない時間帯で既に実施されておりますが、一部、初期のお客様に関しては US East の AWS 環境であるため、本日 4日の 8時から 13 時間の間メンテナンス中でログインできない可能性がございます。(4日の21時まで)

お手数ですが、このようなお客様に関しましては、当社までご連絡ください。

社会的に不安定な情勢が続く中、サーバやコンピュータ、ITインフラへの攻撃が増加しております。Jamf 社も、当社もお客様に安心してご利用いただける環境の維持に努めております。何卒ご理解のほどよろしくお願い申し上げます。
​

0 コメント

iOS & iPadOS 15.4.1 , macOS , tvOS , watchOS もリリース、バグ Fix と重要セキュリティアップデート有

4/1/2022

0 コメント

 

iOS & iPadOS 15.4.1 , macOS , tvOS , watchOS もリリース、バグ Fix と重要セキュリティアップデート有

画像
iOS15.4.1 , iPadOS 15.4.1 , macOS Monterey には重要なゼロデイ脆弱性セキュリティアップデートが含まれています。なるべく早くアップデートいただくことをお勧めいたします。(watchOS , tvOS にはセキュリティアップデートはありません)
​

iOS 15.3.1 , iPadOS 15.4.1 , macPS Monterey リリースに重要セキュリティアップデート有りです

以下の通りアップデートがリリースされました。バッテリーが早く減るバグと、ゼロデイ脆弱性の修正2件を含むアップデートになっています。ご存知の通り、ロシアのウクライナ侵攻の背後で、デバイスのっとりや、PCランサムウェア攻撃が増加中です。セキュリティアップデート、OSアップデートは小まめに確認・インストールをお願いいたします。

  • iOS 15.4.1 と iPadOS 15.4.1
  • macOS Monterey 12.3.1
  • watchOS 8.5.1
  • tvOS 15.4.1

バグ Fix
  • iOS 15.4にアップデートしたあと、バッテリーが予想よりも早く消耗する可能性がある問題
  • テキストナビゲートまたは通知表示中に点字デバイスが反応しなくなる可能性がある問題
  • “Made for iPhone”補聴器で一部の他社製Appとの接続が解除される可能性がある問題

エンタープライズ機能のアップデート

macOS Monterey 12.3.1 でバグFix 1件
  • ​ソフトウェアアップデートがAppleロゴとプログレスバーで動かなくなる可能性がある問題を解決します。
​

セキュリティアップデート

iOS 15.4.1 , iPadOS 15.4.1
  • Appleが実際のエクスプロイトを確認したゼロデイ脆弱性に対応:CVE-2022-22675

macOS Monterey 12.3.1
  • Appleが実際のエクスプロイトを確認したゼロデイ脆弱性に対応:CVE-2022-22675 , CVE-2022-22674
​
当社の「iOS デバイス導入支援サービス」についての詳細はこちらをご覧ください。
0 コメント

    Author

    ソフトブレーン・インテグレーション株式会社
    代表取締役
    柴崎忠生
    ビジネス・インキュベーター
    セキュリティ・コンサルタント
    ITIL プロフェッショナル

    Archives

    4月 2025
    3月 2025
    1月 2025
    11月 2024
    10月 2024
    9月 2024
    7月 2024
    6月 2024
    3月 2024
    1月 2024
    12月 2023
    10月 2023
    9月 2023
    6月 2023
    5月 2023
    4月 2023
    3月 2023
    2月 2023
    1月 2023
    12月 2022
    11月 2022
    10月 2022
    9月 2022
    8月 2022
    7月 2022
    6月 2022
    5月 2022
    4月 2022
    3月 2022
    2月 2022
    1月 2022
    12月 2021
    11月 2021
    10月 2021
    9月 2021
    7月 2021
    6月 2021
    5月 2021
    4月 2021
    3月 2021
    2月 2021
    1月 2021
    12月 2020
    11月 2020
    10月 2020
    9月 2020
    8月 2020
    7月 2020
    6月 2020
    5月 2020
    4月 2020
    3月 2020
    12月 2019
    10月 2019
    9月 2019
    8月 2019
    7月 2019
    6月 2019
    5月 2019
    3月 2019
    2月 2019
    12月 2018
    9月 2018
    8月 2018
    7月 2018
    6月 2018
    5月 2018
    4月 2018
    3月 2018
    2月 2018
    1月 2018
    12月 2017
    11月 2017
    10月 2017
    9月 2017
    7月 2017
    6月 2017
    5月 2017
    4月 2017
    3月 2017
    1月 2017
    12月 2016
    10月 2016
    9月 2016
    8月 2016
    7月 2016
    6月 2016
    5月 2016
    4月 2016
    3月 2016
    2月 2016
    1月 2016
    12月 2015
    11月 2015
    10月 2015
    9月 2015
    8月 2015
    7月 2015
    4月 2015
    3月 2015
    12月 2014
    11月 2014
    10月 2014
    9月 2014
    8月 2014
    7月 2014
    6月 2014
    5月 2014

    Categories

    すべて
    Apple Transport Security
    Apple TV
    Apple Watch
    AppleConfigurator2
    Google Chrome
    ICloud
    IOS Security
    IOS ウィルス
    IOS セキュリティ
    IOS マルウエア
    IOS 安全性
    IOS7
    IOS8
    Ios8.2
    IOS9
    IOS9 コンテンツブロッカー
    IPad
    IPhone
    IPhone 6 Plus
    IPhone 6 Plus カメラ交換プログラム
    IPod Touch
    ITunes
    MacOSX
    MacOSX EL Capitan 10.11
    Microsoft Exchange
    WatchOS2
    XCodeGhost
    スクリプト
    セキュリティ
    バッテリー
    ベーシック認証廃止
    モバイルセキュリティ
    モバイル安全性
    モビリティ設計
    運用
    設計
    年金情報流出
    年金情報漏洩

    RSSフィード

ソフトブレーン・インテグレーション株式会社
〒
103-0012 東京都中央区日本橋堀留町2丁目3-5 木下ビルディング8階
tel 03-6892-1180 fax 03-6892-1183 url https://www.sbi.co.jp/
ホーム  | トピックス | セミナー情報  | お問合せ
会社案内 | 会社概要 | ご挨拶 | 企業理念 | 所在地
サービス案内 | 導入支援 | キッティング | AMC | ​Jamf Pro | Jamf Now | Jamf Nowリモート導入支援 | Mobile Iron | Zoom | Okta | iOSアーキテクチャ講習会 | iOSユーザ向け講習会 
サイトポリシー | サイトマップ 
Picture
ソフトブレーン・インテグレーション株式会社は、Apple Consultants Network に参加しています。Appleに認定されたコンサルタントとしてiOS/MAC 等Apple製品の導入支援事業を行っております。
▲上に戻る

Copyright(C) SOFTBRAIN INTEGRATION Co.,Ltd. All Right s Reserved.