0
0

More than 1 year has passed since last update.

SharePointOnlineモダンサイトの色を変える

Last updated at Posted at 2022-12-27

会社のロゴの色に合わせたいのですが、標準では用意されていませんね。ということでカスタマイズをしたいと思います。

SharePoint Online Management Shellは32ビットPCでは利用できないようです。

以下を参考に...

まずはSharePoint Online Management Shellをインストールと思いまして...
いきなりアウトです。ああ32ビットマシーンだったわ。インストールできないですね。

と思いましたが、もしかしてPowerShell 3.0がない?

もう一度やってみたけど、やっぱり64ビットしか機能しないようですね。
image.png

ああ、REST APIになるなぁ。
取りあえず、色の定義ファイルだけは作っておきます。

{
  "themePrimary": "#139244",
  "themeLighterAlt": "#f2fbf5",
  "themeLighter": "#ccedd9",
  "themeLight": "#a4deba",
  "themeTertiary": "#5abd80",
  "themeSecondary": "#259f54",
  "themeDarkAlt": "#11833d",
  "themeDark": "#0e6e33",
  "themeDarker": "#0b5126",
  "neutralLighterAlt": "#faf9f8",
  "neutralLighter": "#f3f2f1",
  "neutralLight": "#edebe9",
  "neutralQuaternaryAlt": "#e1dfdd",
  "neutralQuaternary": "#d0d0d0",
  "neutralTertiaryAlt": "#c8c6c4",
  "neutralTertiary": "#a19f9d",
  "neutralSecondary": "#605e5c",
  "neutralSecondaryAlt": "#8a8886",
  "neutralPrimaryAlt": "#3b3a39",
  "neutralPrimary": "#323130",
  "neutralDark": "#201f1e",
  "black": "#000000",
  "white": "#ffffff"
}

仕方ないのでREST API をやってみよう。

まったく仕様を理解していないのでエラーが出た時に分かりやすいようにCURLコマンドを使って接続してみたいと思います。接続方法が分かればApexからコールアウトしてもいいかもしれません。(他の言語を最近触ってないのでよく分からん)

以下を参考にさせていただきました。

まずは、SharePoint Online へリクエストを行い RpsContextCookie を取得します。

正直結果を見てもよく分かりません。cookie1.txtができてました。(コードブロックを使うとスクロールされて一覧性が損なわれるので今回は使いません)

curl -i -X POST -H "Content-Length:0" -c cookie1.txt "https://[ここを変える].sharepoint.com/_layouts/Authenticate.aspx?Source="

もしかして、httpsで接続できてないと思って以下を試しましたが、効果があったのかは全く分かりません。変わったような感じはないですね。

/usr/bin/curl -s -S -tlsv1.2 --cacert ./cacert.pem --compressed -i -X POST -H "Content-Length:0" -c cookie1.txt "https://[ここを変える].sharepoint.com/_layouts/Authenticate.aspx?Source="

実行すると cookie1.txt に RpsContextCookie が格納されるので、次はそれを使って Office 365 の STS へ SAML リクエストを行います。

一覧性がないですが、どうしてもうまく表示できないのでコードブロック使っています。

curl -i -X POST -b cookie1.txt -d "<s:Envelope xmlns:s='http://www.w3.org/2003/05/soap-envelope' xmlns:a='http://www.w3.org/2005/08/addressing' xmlns:u='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd'><s:Header><a:Action s:mustUnderstand='1'>http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue</a:Action><a:ReplyTo><a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address></a:ReplyTo><a:To s:mustUnderstand='1'>https://login.microsoftonline.com/extSTS.srf</a:To><o:Security s:mustUnderstand='1' xmlns:o='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'><o:UsernameToken><o:Username>[ログイン名]</o:Username><o:Password>[パスワード]</o:Password></o:UsernameToken></o:Security></s:Header><s:Body><t:RequestSecurityToken xmlns:t='http://schemas.xmlsoap.org/ws/2005/02/trust'><wsp:AppliesTo xmlns:wsp='http://schemas.xmlsoap.org/ws/2004/09/policy'><a:EndpointReference><a:Address>https://tenant.sharepoint.com/</a:Address></a:EndpointReference></wsp:AppliesTo><t:KeyType>http://schemas.xmlsoap.org/ws/2005/05/identity/NoProofKey</t:KeyType><t:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</t:RequestType><t:TokenType>urn:oasis:names:tc:SAML:1.0:assertion</t:TokenType></t:RequestSecurityToken></s:Body></s:Envelope>" "https://login.microsoftonline.com/extSTS.srf"

このレスポンスとして XML が返ってくるので、その中から を探し、この BinarySecurityToken をメモしておきます。ドラクエのふっかつのじゅもんを思い出しますね。メモしたもののサンプルが下記です。

http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Issuehttp://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous2022-12-26T07:53:10.2864797Z2022-12-26T07:58:10.2864797Zurn:passport:compacthttps://tenant.sharepoint.com/2022-12-26T07:53:10Z2022-12-27T07:53:10Zt=EwAoA06hBwAUNfDkMme61kIdXqvj9tWnUbHtXWEAAX/dzAV3qKsNmyl6otuAux8+BmHuN+xS9xjU/Iz+KPPcQe4CXRLvzH5Z0xFYmZVsHYOAG063s+yYNTk3jtp6kMzuOlIEBPDxcu21WZYLYAm/O9KLjLLBCJWWwpFlnsnSCIa9GLmrDzNljwFI44fQ/aRTz06MuWUSVA3PfXU2ojqVmV33Zm936zhGtg5+ZD8BqpJK/h665KlAZ6/cR1MaUYgvbZxB+Ewbbh78IaCR/qfOTXlEcYnweCgYIQvztVbhIVG8odVGXTB3RXC/jI4Y6InMfuN2fR1y4RE2rBCjOTSiF0oGaULCYlEnFfyb3gl4iT1bV1fMXYCJnC/6j15Q2zcDZgAACE0js/MdmYDe+AGzTJKfKxJ/YqSAy3pClPWgiQwXytP5BcnTTzJXyOj8aAb4GuDHUWqSy2J1YEhKpLnBdaZ9HfCnqtYsyTSexuM7e+LXzSglOk7mAOixrPlRGLpviZyXm9dg3+FnQ3PdqkoJMJUuuihVkTq4Og/2viWk0ip9Mc6pLS855sDES70D3Q/xl8BNCrUHPHIMrHU0Kbenr1tC7jaKs7mUr0de0Gjp5GMvNL5TDjKEe6SEwmDFLWXcIfrIHIp4K7xeGf5O5C5eN6EiccoVkJYm/Srq1JZpdTTP44us2mS7wgzSy/qrOrDbIR/CO007GXxKBNhRowMZSxS0SnOGb8Cn6P4bKWc5+YqLOIve/0kcQNtgUkP6LsenvuG0JM2KCFylpXCBut/2Z6l5aWVho1jqn5O2IA1Gws7ZlOQHjY0S7pR+FkSVGFad+x6JUe6mFzVrsW0bg3vvkChgC5gLb8jeEn1rnBSSCnPZqsMkQFsPd9RfLwZGDWIAOYAtEuJ3teepT/W/44oXCKF1SI3CIqRGUkofiRX8sl3qHZwNpGmKN7dh34Ci3AD9xiRl7NjW23lw1IWmfQh7XHSieFFYRCEUPc5DU3RykrfwLcgnqmaBpb4veAclpBoIkT7suGgF957USbT4FOlB0s9IiHOPfgbahK+xq/kIVPoP7KAwD4RfAg==&p=

"t=EwAoA06hBwAUNfDkMme61kIdXqvj9tWnUbHtXWEAAX/dzAV3qKsNmyl6otuAux8+BmHuN+xS9xjU/Iz+KPPcQe4CXRLvzH5Z0xFYmZVsHYOAG063s+yYNTk3jtp6kMzuOlIEBPDxcu21WZYLYAm/O9KLjLLBCJWWwpFlnsnSCIa9GLmrDzNljwFI44fQ/aRTz06MuWUSVA3PfXU2ojqVmV33Zm936zhGtg5+ZD8BqpJK/h665KlAZ6/cR1MaUYgvbZxB+Ewbbh78IaCR/qfOTXlEcYnweCgYIQvztVbhIVG8odVGXTB3RXC/jI4Y6InMfuN2fR1y4RE2rBCjOTSiF0oGaULCYlEnFfyb3gl4iT1bV1fMXYCJnC/6j15Q2zcDZgAACE0js/MdmYDe+AGzTJKfKxJ/YqSAy3pClPWgiQwXytP5BcnTTzJXyOj8aAb4GuDHUWqSy2J1YEhKpLnBdaZ9HfCnqtYsyTSexuM7e+LXzSglOk7mAOixrPlRGLpviZyXm9dg3+FnQ3PdqkoJMJUuuihVkTq4Og/2viWk0ip9Mc6pLS855sDES70D3Q/xl8BNCrUHPHIMrHU0Kbenr1tC7jaKs7mUr0de0Gjp5GMvNL5TDjKEe6SEwmDFLWXcIfrIHIp4K7xeGf5O5C5eN6EiccoVkJYm/Srq1JZpdTTP44us2mS7wgzSy/qrOrDbIR/CO007GXxKBNhRowMZSxS0SnOGb8Cn6P4bKWc5+YqLOIve/0kcQNtgUkP6LsenvuG0JM2KCFylpXCBut/2Z6l5aWVho1jqn5O2IA1Gws7ZlOQHjY0S7pR+FkSVGFad+x6JUe6mFzVrsW0bg3vvkChgC5gLb8jeEn1rnBSSCnPZqsMkQFsPd9RfLwZGDWIAOYAtEuJ3teepT/W/44oXCKF1SI3CIqRGUkofiRX8sl3qHZwNpGmKN7dh34Ci3AD9xiRl7NjW23lw1IWmfQh7XHSieFFYRCEUPc5DU3RykrfwLcgnqmaBpb4veAclpBoIkT7suGgF957USbT4FOlB0s9IiHOPfgbahK+xq/kIVPoP7KAwD4RfAg==&p="

次はこの BinarySecurityToken を使って SharePoint Online へ認証リクエストを行ない、Authentication Cookie を取得します。

curl -i -X POST -d "t=EwAoA06hBwAUNfDkMme61kIdXqvj9tWnUbHtXWEAAX/dzAV3qKsNmyl6otuAux8+BmHuN+xS9xjU/Iz+KPPcQe4CXRLvzH5Z0xFYmZVsHYOAG063s+yYNTk3jtp6kMzuOlIEBPDxcu21WZYLYAm/O9KLjLLBCJWWwpFlnsnSCIa9GLmrDzNljwFI44fQ/aRTz06MuWUSVA3PfXU2ojqVmV33Zm936zhGtg5+ZD8BqpJK/h665KlAZ6/cR1MaUYgvbZxB+Ewbbh78IaCR/qfOTXlEcYnweCgYIQvztVbhIVG8odVGXTB3RXC/jI4Y6InMfuN2fR1y4RE2rBCjOTSiF0oGaULCYlEnFfyb3gl4iT1bV1fMXYCJnC/6j15Q2zcDZgAACE0js/MdmYDe+AGzTJKfKxJ/YqSAy3pClPWgiQwXytP5BcnTTzJXyOj8aAb4GuDHUWqSy2J1YEhKpLnBdaZ9HfCnqtYsyTSexuM7e+LXzSglOk7mAOixrPlRGLpviZyXm9dg3+FnQ3PdqkoJMJUuuihVkTq4Og/2viWk0ip9Mc6pLS855sDES70D3Q/xl8BNCrUHPHIMrHU0Kbenr1tC7jaKs7mUr0de0Gjp5GMvNL5TDjKEe6SEwmDFLWXcIfrIHIp4K7xeGf5O5C5eN6EiccoVkJYm/Srq1JZpdTTP44us2mS7wgzSy/qrOrDbIR/CO007GXxKBNhRowMZSxS0SnOGb8Cn6P4bKWc5+YqLOIve/0kcQNtgUkP6LsenvuG0JM2KCFylpXCBut/2Z6l5aWVho1jqn5O2IA1Gws7ZlOQHjY0S7pR+FkSVGFad+x6JUe6mFzVrsW0bg3vvkChgC5gLb8jeEn1rnBSSCnPZqsMkQFsPd9RfLwZGDWIAOYAtEuJ3teepT/W/44oXCKF1SI3CIqRGUkofiRX8sl3qHZwNpGmKN7dh34Ci3AD9xiRl7NjW23lw1IWmfQh7XHSieFFYRCEUPc5DU3RykrfwLcgnqmaBpb4veAclpBoIkT7suGgF957USbT4FOlB0s9IiHOPfgbahK+xq/kIVPoP7KAwD4RfAg==&p=" -c cookie2.txt "https://[ここを変える].sharepoint.com/_forms/default.aspx?wa=wsignin1.0"

ここまで来ると、cookie2.txt に SharePoint Online の REST API を呼び出すための rtFa、FedAuth が揃うので、いよいよこれを使って SharePoint Online の REST API を呼び出すことができます。

ここから、本当に使えるのかを確かめたいけど....

この2つ目をみると色々有益なエンドポイントが書かれているなぁ。

curl -i -X POST -H "Content-Length:0" -b cookie2.txt "https://[ここを変える].sharepoint.com/sites/teamsite/_api/contextinfo"

大事なのはここだな。おお、Titleが取得できたようです。 こんな感じで使えるのかもしれませんね。

FKD Portal Site

<?xml version="1.0" encoding="utf-8"?><d:Title xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml">FKD Portal Site</d:Title>
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0