ドキュメント
-
手順 3: SAP からデータを取得するための SharePoint アプリケーションを作成する - BizTalk Server
詳細情報: 手順 3: SAP からデータを取得する SharePoint アプリケーションを作成する
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
SAP Gateway for Microsoft および Azure Active Directory Authentication Library for .NET を使用すると、SAP データの読み書き、およびオプションで SharePoint データの読み書きを行う SharePoint アドインを作成できます。 この記事では、SAP への承認されたアクセスを行う SharePoint アドインを設計する手順について説明します。
この記事の手順に関する前提条件を以下に示します。
Microsoft Azure Active Directory (Azure AD) サブスクリプションに関連付けられているOffice 365 ドメイン内のOffice 365開発者サイト。 「Office 365 で SharePoint アドインの開発環境をセットアップする」または「既存の Office 365 サブスクリプション内で開発者向けサイトを作成する」を参照してください。
Visual Studio 2013 Update 2 以降。「Visual Studio へようこそ」から入手できます。
Microsoft Office Developer Tools for Visual Studio。 Visual Studio 2013 以降の更新プログラム 2 に含まれるバージョン。
SAP Gateway for Microsoft は、Azure で展開され、設定されます。 SAP Gateway for Microsoft のドキュメントを参照してください。
Azure の組織アカウント。 「Office 365 API アプリを手動で Azure AD に登録する」を参照してください。
注意
アカウントを作成したら、Office 365 アカウントにサインインして (login.microsoftonline.com) 一時パスワードを変更してください。
サンプル データがある SAP OData エンドポイント。 SAP Gateway for Microsoft のドキュメントを参照してください。
Azure AD に関する基礎知識。 「Azure AD の概要」を参照してください。
SharePoint アドインの作成に関する基礎知識。「プロバイダー向けのホスト型 SharePoint アドインの作成を始める」を参照してください。
Azure AD の OAuth 2.0 に関する基礎知識。 詳細については、「OAuth 2.0 と Azure Active Directory を使用する Web アプリケーションへのアクセスの承認」とその子トピックを参照してください。
コード サンプル:SharePoint: SharePoint アドインでの SAP Gateway to Microsoft の使用
Azure AD で OAuth 2.0 を使用すると、アプリケーションは Azure でホストされる複数のリソースにアクセスできるようになります。SAP Gateway for Microsoft は、そのうちの 1 つです。 OAuth 2.0 では、ユーザーに加えて、アプリケーションもセキュリティ プリンシパルです。 アプリケーション プリンシパルでは、ユーザーに加えて (場合によってはユーザーの代わりに)、保護されたリソースに対する認証と承認が必要です。
このプロセスには、OAuth "フロー" が含まれます。アプリケーションは、SharePoint アドインである可能性があり、Azure AD を OAuth 2.0 承認サーバーとして使用するように構成されているすべての Azure でホストされるサービスとアプリケーションによって受け入れられるアクセス トークン (および更新トークン) を取得します。 このプロセスは、「低信頼の承認とその子記事を使用する SharePoint アドインの作成」の説明に従って、プロバイダーホスト型 SharePoint アドインのリモート コンポーネントが SharePoint に承認 を取得する方法とよく似ています。 ただし、ACS 承認システムでは、Azure AD ではなく信頼されたトークン発行者として Azure Access Control Service (ACS) が使用されます。
ヒント
SharePoint アドインが SAP Gateway for Microsoft だけでなく SharePoint にもアクセスする場合、SAP Gateway for Microsoft へのアクセス トークンを取得するための Azure AD と、SharePoint へのアクセス トークンを取得するための ACS 承認システムの両方のシステムが必要になります。 これら 2 つのソースからのトークンには、互換性がありません。 詳細については、「SharePoint アクセスを ASP.NET アプリケーションに追加する (オプション)」を参照してください。
重要
Azure Active Directory (Azure AD) のサービスである Azure アクセス制御 (ACS) は、2018 年 11 月 7 日に廃止されます。 SharePoint アドイン モデルでは、(この廃止の影響を受けない) https://accounts.accesscontrol.windows.net
ホスト名を使用しているため、この廃止による影響はありません。 詳細については、「SharePoint アドインに対する Azure アクセス制御の終了の影響」を参照してください。
Azure AD の OAuth 2.0 で使用される OAuth フローの詳細な説明および図については、「OAuth 2.0 と Azure Active Directory を使用した Web アプリケーションへのアクセスの承認」を参照してください。
SharePoint へのアクセスのフローに関する類似の説明と図については、「コンテキスト トークン フローの手順」を参照してください。
以下の手順に従って、SharePoint アドインのプロジェクトを Visual Studio で作成します (この記事の一連の例では、C# を使用することを想定していますが、新規プロジェクト テンプレートの [Visual Basic] セクションで SharePoint アドインのプロジェクトを開始することもできます)。
https://<O365_domain>.sharepoint.com/
と指定します。 アドインの種類として [プロバイダー向けのホスト型] を指定します。[次へ] をクリックします。プロジェクトが作成された後、Office 365 アカウントにログインするように求めるプロンプトが表示されます。 アカウント管理者の資格情報を使用します (たとえば、Bob@<O365_domain>.onmicrosoft.com
)。
Visual Studio ソリューションには、SharePoint アドインの固有のプロジェクトと ASP.NET Web フォーム プロジェクトの 2 つのプロジェクトがあります。 次の手順で 、Microsoft Authentication Library (MSAL) パッケージを ASP.NET プロジェクトに追加します。
次の手順を使用して、Json.net パッケージを ASP.NET プロジェクトに追加します。
[閉じる] を選択します。
注意
セキュリティ上の理由から、アドインの開発時に管理者アカウントを使用することはお勧めしません。
左側の [Active Directory] を選択します。
ご使用のディレクトリを選択します。
[アプリケーション] (上部のナビゲーション バーにあります) を選択します。
画面下部にあるツールバーで [追加] を選択します。
表示されるダイアログで、[組織が開発中のアプリケーションを追加] を選択します。
[アプリケーションの追加] ダイアログで、アプリケーションに名前を付けます。 この記事の例では、「ContosoAutomobileCollection」を使用します。
アプリケーションの種類として、[Web アプリケーションまたは Web API] を選択してから、右矢印ボタンを選択します。
ダイアログの 2 番目のページで、[サインオン URL] として Visual Studio ソリューションの ASP.NET プロジェクトから SSL デバッグ URL を使用します。 次の手順を使用して URL を見つけることができます (Visual Studio デバッガー (F5) を実行できるように、最初にアドインをデバッグ URL に登録する必要があります。 アドインをステージングする準備ができたら、そのステージング Azure Web サイト URL に再登録します。 「アドインを変更し、Azure とOffice 365にステージングする」を参照してください)。
https://localhost:44300/
)。[アプリケーション ID/URI] では、アプリケーションに一意の URI を指定します。たとえば、https://localhost:44300/ContosoAutomobileCollection
のように、SSL URL の末尾にアプリケーション名を追加します。
チェックマーク ボタンを選択します。 アプリケーションの Azure ダッシュボードが開き、成功を示すメッセージが表示されます。
ページ上部で [構成] を選択します。
[クライアント ID] までスクロールし、その値をコピーしておきます。 これは後続の手順で必要になります。
[キー] セクションでキーを作成します。 このキーは、最初は表示されません。 ページ下部にある [保存] をクリックすると、キーが表示されます。 そのキーをコピーします。 これは後続の手順で必要になります。
[他のアプリケーションに対するアクセス許可] までスクロールし、SAP Gateway for Microsoft サービス アプリケーションを選択します。
[デリゲートされたアクセス許可] ドロップダウン リストを開き、SharePoint アドインが必要とする SAP Gateway for Microsoft サービスへのアクセス許可のボックスを有効にします。
画面下部にある [保存] を選択します。
<appSettings>
セクションに SharePoint アドインの ClientID および ClientSecret の要素が既に追加されています (これらは、ASP.NET アプリケーションが SharePoint にアクセスする場合、Azure ACS 承認システムで使用されます。引き続き使用する例では無視できますが、削除することはできません。プロバイダーホスト型 SharePoint アドインでは、アドインが SharePoint データにアクセスしていない場合でも必要です。これらの値は、Visual Studio で F5 を選択するたびに変更されます)。以下の 2 つの要素をセクションに追加します。 これらは、アプリケーションにより、Azure AD に対する認証のために使用されます (OAuth ベースの認証および承認システムでは、ユーザーと同様、アプリケーションもセキュリティ プリンシパルであることを思い出してください)。
<add key="ida:ClientID" value="" />
<add key="ida:ClientKey" value="" />
前の手順で Azure AD ディレクトリから保存したクライアント ID を、ida:ClientID キーの値として挿入します。 大文字小文字および句読点は、コピーしたままの状態にし、値の先頭および末尾にスペース文字を含めないように注意します。 ida:ClientKey キーの場合は、ディレクトリから保存したキーを使用します。 ここでも、スペース文字を含めないように、また何も変更しないように注意します。 これで、<appSettings>
セクションは、次のようになります (ClientId 値は、GUID または空の文字列に設定されます)。
<appSettings>
<add key="ClientId" value="" />
<add key="ClientSecret" value="LypZu2yVajlHfPLRn5J2hBrwCk5aBOHxE4PtKCjIQkk=" />
<add key="ida:ClientID" value="4da99afe-08b5-4bce-bc66-5356482ec2df" />
<add key="ida:ClientKey" value="URwh/oiPay/b5jJWYHgkVdoE/x7gq3zZdtcl/cG14ss=" />
</appSettings>
注意
Azure AD は、登録する際に使用した "localhost" URL によりアプリケーションを判別します。 クライアント ID とクライアント キーは、この ID と関連付けられています。 アプリケーションを Azure Web サイトにステージングする準備が整ったら、新しい URL で再登録します。
appSettings セクションで、Authority キーを追加し、その値を組織アカウントの Office 365 ドメイン (some_domain.onmicrosoft.com) に設定します。 このトピックの例では、組織アカウントは Bob@<O365_domain>.onmicrosoft.com
なので、Authority は <O365_domain>.onmicrosoft.com
になります。
<add key="Authority" value="<O365_domain>.onmicrosoft.com" />
appSettings セクションで、AppRedirectUrl キーを追加し、その値を、ASP.NET アドインが認証コードを Azure AD から取得した後にユーザーのブラウザーがリダイレクトされるページに設定します。 通常これは、Azure AD への呼び出しが実行されたときにユーザーがいたのと同じページです。 このトピックの例では、以下のように SSL URL 値に "/Pages/Default.aspx" が付加された値が使用されます (これは、ステージング用に変更するのとは別の値です)。
<add key="AppRedirectUrl" value="https://localhost:44322/Pages/Default.aspx" />
引き続き appSettings セクションで ResourceUrl キーを追加し、その値を SAP Gateway for Microsoft のアプリ ID URI (ASP.NET アプリケーションの APP ID URI ではなく ) に設定します。 この値は SAP Gateway for Microsoft 管理者から入手します。 次に例を示します。
<add key="ResourceUrl" value="http://<SAP_gateway_domain>.cloudapp.net/" />
<appSettings>
セクションは、次のようになります。
<appSettings>
<add key="ClientId" value="06af1059-8916-4851-a271-2705e8cf53c6" />
<add key="ClientSecret" value="LypZu2yVajlHfPLRn5J2hBrwCk5aBOHxE4PtKCjIQkk=" />
<add key="ida:ClientID" value="4da99afe-08b5-4bce-bc66-5356482ec2df" />
<add key="ida:ClientKey" value="URwh/oiPay/b5jJWYHgkVdoE/x7gq3zZdtcl/cG14ss=" />
<add key="Authority" value="<O365_domain>.onmicrosoft.com" />
<add key="AppRedirectUrl" value="https://localhost:44322/Pages/Default.aspx" />
<add key="ResourceUrl" value="http://<SAP_gateway_domain>.cloudapp.net/" />
</appSettings>
web.config ファイルを保存して閉じます。
ヒント
Visual Studio デバッガー (F5) を実行するときに、web.config ファイルを開いたままにしないでください。 F5 キーを押すたびに、Office Developer Tools for Visual Studio は、ClientId 値 (ida:ClientID ではありません) を変更します。 ファイルが開いていると、デバッグを実行する前に、プロンプトに応答して web.config ファイルを再度読み込む必要が生じます。
ASP.NET プロジェクトを右クリックし、Visual Studio 項目追加プロセスを使用して、新しいクラス ファイルを AADAuthHelper.cs という名前のプロジェクトに追加します。
以下の using ステートメントをファイルに追加します。
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System.Configuration;
using System.Web.UI;
アクセス キーワードを public から internal に変更し、static キーワードをクラス宣言に追加します。
internal static class AADAuthHelper
次のフィールドをクラスに追加します。 これらのフィールドには、ASP.NET アプリケーションで Azure AD からアクセス トークンを取得するために使用される情報が格納されます。
private static readonly string _authority = ConfigurationManager.AppSettings["Authority"];
private static readonly string _appRedirectUrl = ConfigurationManager.AppSettings["AppRedirectUrl"];
private static readonly string _resourceUrl = ConfigurationManager.AppSettings["ResourceUrl"];
private static readonly string _clientId = ConfigurationManager.AppSettings["ida:ClientID"];
private static readonly ClientCredential _clientCredential = new ClientCredential(
ConfigurationManager.AppSettings["ida:ClientID"],
ConfigurationManager.AppSettings["ida:ClientKey"]);
private static readonly AuthenticationContext _authenticationContext =
new AuthenticationContext("https://login.windows.net/common/" +
ConfigurationManager.AppSettings["Authority"]);
次に示すプロパティをクラスに追加します。 このプロパティは、Azure AD サインイン画面への URL を保持します。
private static string AuthorizeUrl
{
get
{
return string.Format("https://login.windows.net/{0}/oauth2/authorize?response_type=code&redirect_uri={1}&client_id={2}&state={3}",
_authority,
_appRedirectUrl,
_clientId,
Guid.NewGuid().ToString());
}
}
次のプロパティをクラスに追加します。 これらは、アクセス トークンおよびリフレッシュ トークンをキャッシュし、それらの有効性を確認します。
public static Tuple<string, DateTimeOffset> AccessToken
{
get {
return HttpContext.Current.Session["AccessTokenWithExpireTime-" + _resourceUrl]
as Tuple<string, DateTimeOffset>;
}
set { HttpContext.Current.Session["AccessTokenWithExpireTime-" + _resourceUrl] = value; }
}
private static bool IsAccessTokenValid
{
get
{
return AccessToken != null
&& !string.IsNullOrEmpty(AccessToken.Item1)
&& AccessToken.Item2 > DateTimeOffset.UtcNow;
}
}
private static string RefreshToken
{
get { return HttpContext.Current.Session["RefreshToken" + _resourceUrl] as string; }
set { HttpContext.Current.Session["RefreshToken-" + _resourceUrl] = value; }
}
private static bool IsRefreshTokenValid
{
get { return !string.IsNullOrEmpty(RefreshToken); }
}
次のメソッドをクラスに追加します。 これらは、認証コードの有効性を確認し、認証コードまたは更新トークンを使用して Azure AD からアクセス トークンを取得するために使用されます。
private static bool IsAuthorizationCodeNotNull(string authCode)
{
return !string.IsNullOrEmpty(authCode);
}
private static Tuple<Tuple<string,DateTimeOffset>,string> AcquireTokensUsingAuthCode(string authCode)
{
var authResult = _authenticationContext.AcquireTokenByAuthorizationCode(
authCode,
new Uri(_appRedirectUrl),
_clientCredential,
_resourceUrl);
return new Tuple<Tuple<string, DateTimeOffset>, string>(
new Tuple<string, DateTimeOffset>(authResult.AccessToken, authResult.ExpiresOn),
authResult.RefreshToken);
}
private static Tuple<string, DateTimeOffset> RenewAccessTokenUsingRefreshToken()
{
var authResult = _authenticationContext.AcquireTokenByRefreshToken(
RefreshToken,
_clientCredential.OwnerId,
_clientCredential,
_resourceUrl);
return new Tuple<string, DateTimeOffset>(authResult.AccessToken, authResult.ExpiresOn);
}
クラスに、次のメソッドを追加します。 これは、SAP Gateway for Microsoft を介して SAP データを取得する呼び出しを実行する前に、有効なアクセス トークンを取得するため、ASP.NET 分離コードから呼び出されます。
internal static void EnsureValidAccessToken(Page page)
{
if (IsAccessTokenValid)
{
return;
}
else if (IsRefreshTokenValid)
{
AccessToken = RenewAccessTokenUsingRefreshToken();
return;
}
else if (IsAuthorizationCodeNotNull(page.Request.QueryString["code"]))
{
Tuple<Tuple<string, DateTimeOffset>, string> tokens = null;
try
{
tokens = AcquireTokensUsingAuthCode(page.Request.QueryString["code"]);
}
catch
{
page.Response.Redirect(AuthorizeUrl);
}
AccessToken = tokens.Item1;
RefreshToken = tokens.Item2;
return;
}
else
{
page.Response.Redirect(AuthorizeUrl);
}
}
ヒント
クラスの AADAuthHelper
エラー処理は最小限です。 運用環境で使用可能な品質を持つ、堅牢な SharePoint アドインを作成するには、MSDN ノード「OAuth 2.0 と Azure Active Directory を使用した Web アプリケーションへのアクセスの承認」で説明されているように、エラー処理をさらに追加する必要があります。
1 つ以上のクラスを作成して、アドインが SAP から取得するデータをモデル化します。 このトピックの例では、データ モデル クラスが 1 つだけ存在します。 ASP.NET プロジェクトを右クリックし、Visual Studio 項目追加プロセスを使用して、新しいクラス ファイルを Automobile.cs という名前のプロジェクトに追加します。
次のコードをクラスの本文に追加します。
public string Price;
public string Brand;
public string Model;
public int Year;
public string Engine;
public int MaxPower;
public string BodyStyle;
public string Transmission;
Default.aspx.cs ファイルを開き、次の using ステートメントを追加します。
using System.Net;
using Newtonsoft.Json.Linq;
アドインがアクセスする SAP OData エンドポイントのベース URL を値として持つ const 宣言を Default クラスに追加します。 例を次に示します。
private const string SAP_ODATA_URL = @"https://<SAP_gateway_domain>.cloudapp.net:8081/perf/sap/opu/odata/sap/ZCAR_POC_SRV/";
Office Developer Tools for Visual Studio では、 Page_PreInit メソッドと Page_Load メソッドが追加されました。 Page_Load メソッド内のコードをコメントアウトし、Page_Init メソッド全体をコメントアウトします。 このコードはこの例では使用されません (SharePoint アドインが SharePoint にアクセスする場合に、このコードを復元します。 「SharePoint アクセスを ASP.NET アプリケーションに追加する (オプション)」を参照してください。)
以下の行を Page_Load メソッドの上部に追加します。 これにより、ASP.NET アプリケーションは SSL (HTTPS) を使用して SAP Gateway for Microsoft と通信するので、デバッグのプロセスが簡単になります。しかし、"localhost:port" サーバーは SAP Gateway for Microsoft の資格情報を信頼するようには構成されていません。 このコード行がないと、Default.aspx が開く前に、無効な資格情報であることを警告するメッセージが表示されます。 一部のブラウザーではクリックしてこのエラーに対処できますが、Default.aspx をまったく開けなくなるブラウザーもあります。
ServicePointManager.ServerCertificateValidationCallback = (s, cert, chain, errors) => true;
重要
ASP.NET アプリケーションをステージングに展開する準備ができたら、この行を削除します。 「アドインを変更して Azure および Office 365 にステージングする」を参照してください。
次のコードを Page_Load メソッドに追加します。 メソッドに GetSAPData
渡す文字列は OData クエリです。
if (!IsPostBack)
{
GetSAPData("DataCollection?$top=3");
}
次のメソッドを Default クラスに追加します。 このメソッドは、最初に、アクセス トークンのキャッシュに、Azure AD から取得された有効なアクセス トークンがあることを確認します。 それから、アクセス トークンを含む HTTP GET 要求を作成し、その要求を SAP OData エンドポイントに送信します。 結果は JSON オブジェクトとして返され、これが .NET List オブジェクトに変換されます。 アイテムの 3 つのプロパティが、DataListView にバインドされた配列で使用されます。
private void GetSAPData(string oDataQuery)
{
AADAuthHelper.EnsureValidAccessToken(this);
using (WebClient client = new WebClient())
{
client.Headers[HttpRequestHeader.Accept] = "application/json";
client.Headers[HttpRequestHeader.Authorization] = "Bearer " + AADAuthHelper.AccessToken.Item1;
var jsonString = client.DownloadString(SAP_ODATA_URL + oDataQuery);
var jsonValue = JObject.Parse(jsonString)["d"]["results"];
var dataCol = jsonValue.ToObject<List<Automobile>>();
var dataList = dataCol.Select((item) => {
return item.Brand + " " + item.Model + " " + item.Price;
}).ToArray();
DataListView.DataSource = dataList;
DataListView.DataBind();
}
}
Default.aspx ファイルを開き、次のマークアップをページの formに追加します。
<div>
<h3>Data from SAP via SAP Gateway for Microsoft</h3>
<asp:ListView runat="server" ID="DataListView">
<ItemTemplate>
<tr runat="server">
<td runat="server">
<asp:Label ID="DataLabel" runat="server"
Text="<%# Container.DataItem.ToString()%>" /><br />
</td>
</tr>
</ItemTemplate>
</asp:ListView>
</div>
オプションで、SharePoint クロム コントロールおよび ホスト SharePoint Web サイトのスタイル シートを使用して Web ページに SharePoint ページの "外観" を与えます。
Bob@<O365_domain>.onmicrosoft.com
です。当然のことですが、SharePoint アドインは SharePoint から起動した Web ページに SAP データのみを公開するわけではありません。 SharePoint データの作成、読み込み、更新、削除 (CRUD) も実行できます。 分離コードでは、SharePoint クライアント オブジェクト モデル (CSOM) または SharePoint の REST API のいずれかを使用してこれらを実行します。 CSOM は、Office Developer Tools for Visual Studio によって ASP.NET プロジェクトに自動的に含められるアセンブリのペアとして展開されます。これは、Visual Studio で [ローカルにコピー] に設定されて、ASP.NET アプリケーション パッケージに含められるようになります。
CSOM の使用の詳細については、まず「SharePoint のクライアント ライブラリ コードを使用して基本的な操作を完了する」を参照してください。 REST API の使用については、「 SharePoint REST インターフェイスについて」と「使用する」を参照してください。
SharePoint にアクセスするために CSOM を使用するか、REST API を使用するかにかかわりなく、ASP.NET アプリケーションは、SAP Gateway for Microsoft に対して行うように、SharePoint へのアクセス トークンも取得する必要があります。 この記事の前の方にある「SAP Gateway for Microsoft および SharePoint への認証と承認について」を参照してください。
以下の手順では、この実行方法に関する基本的なガイダンスが提供されますが、まず以下の記事を読むことをお勧めします。
Default.aspx.cs ファイルを開き、メソッドのコメントを解除します Page_PreInit
。 また、Office Developer Tools for Visual Studio が メソッドに追加したコードのコメントを Page_Load
解除します。
SharePoint アドインが SharePoint データにアクセスする場合、アドインが SharePoint で起動されるときに Default.aspx ページに POST される SharePoint コンテキスト トークンをキャッシュする必要があります。 これにより、ブラウザーが Azure AD 認証の後にリダイレクトされても、SharePoint コンテキスト トークンが失われないようにすることができます (このコンテキストをキャッシュする方法には、いくつかのオプションがあります)。Office Developer Tools for Visual Studio は大部分の処理を実行する SharePointContext.cs ファイルを ASP.NET プロジェクトに追加します。 セッション キャッシュを使用するには、if (!IsPostBack)
ブロック内の SAP Gateway for Microsoft を呼び出すコードの前に以下のコードを追加します。
if (HttpContext.Current.Session["SharePointContext"] == null)
{
HttpContext.Current.Session["SharePointContext"]
= SharePointContextProvider.Current.GetSharePointContext(Context);
}
SharePointContext.cs ファイルは、Office Developer Tools for Visual Studio がプロジェクトに追加した別のファイル TokenHelper.cs を呼び出します。 このファイルは、SharePoint のアクセス トークンを取得して使用するために必要なほとんどのコードを提供します。 ただし、有効期限が切れたアクセス トークンや有効期限の切れたリフレッシュ トークンを更新するコードは提供しません。 また、トークンをキャッシュするコードも含まれていません。 運用品質の SharePoint アドインの場合は、このようなコードを追加する必要があります。 前述のステップのキャッシュ ロジックは、その一例です。 また、アクセス トークンをキャッシュしたり、有効期限が切れるまで再使用したりするコードも含める必要があります。 アクセス トークンの有効期限が切れたら、コードはリフレッシュ トークンを使用して新しいアクセス トークンを取得しなければなりません。
CSOM または REST を使用して、データ呼び出しを SharePoint に追加します。 以下の例は、Office Developer Tools for Visual Studio が Page_Load メソッドに追加する CSOM コードを変更したものです。 この例では、コードが独立したメソッドになっており、キャッシュされたコンテキスト トークンの取得によって開始されます。
private void GetSharePointTitle()
{
var spContext = HttpContext.Current.Session["SharePointContext"] as SharePointContext;
using (var clientContext = spContext.CreateUserClientContextForSPHost())
{
clientContext.Load(clientContext.Web, web => web.Title);
clientContext.ExecuteQuery();
SharePointTitle.Text = "SharePoint website title is: " + clientContext.Web.Title;
}
}
SharePoint データをレンダリングする UI 要素を追加します。 以下は、前述のメソッドで参照される HTML コントロールを示しています。
<h3>SharePoint title</h3>
<asp:Label ID="SharePointTitle" runat="server"></asp:Label><br />
注意
SharePoint アドインをデバッグする際、Visual Studio で F5 キーを押すたびに、Office Developer Tools for Visual Studio は Azure ACS にアドインを再登録します。 SharePoint アドインをステージングする場合、長期の登録を行う必要があります。 「アドインを変更して Azure と Office 365 にステージングする」を参照してください。
Visual Studio で F5 キーを使用して SharePoint アドインのデバッグを終了したら、ASP.NET アプリケーションを実際の Azure Web サイトに展開する必要があります。
Microsoft Azure portal で、左側のナビゲーション バーにある [Web サイト] を開きます。
ページの下部にある [新規作成] を選択し、[新規作成] ダイアログで、[WEB サイト] |[簡易作成] を選択します。
ドメイン名を入力して、[Web サイトの作成] を選択します。 新しいサイトの URL のコピーを作成します。 my_domain.azurewebsites.net という形式になっています。
ServicePointManager.ServerCertificateValidationCallback = (s, cert, chain, errors) => true;
を削除します。AppRedirectUrl
ドメイン部分を appSettings
Azure Web サイトのドメインに変更します。 たとえば、<add key="AppRedirectUrl" value="https://localhost:44322/Pages/Default.aspx" />
を <add key="AppRedirectUrl" value="https://my_domain.azurewebsites.net/Pages/Default.aspx" />
に変更します。StartPage
、文字列 ~remoteAppUrl
を、プロトコルを含む Azure Web サイトの完全なドメイン (例: https://my_domain.azurewebsites.net
) に置き換えます。 値全体StartPage
がであるhttps://my_domain.azurewebsites.net/Pages/Default.aspx
必要があります (通常、StartPage
値はweb.config ファイル内のキーのAppRedirectUrl
値とまったく同じです)。Azure 管理者アカウントを使用して、Azure portal にサインインします。
左側の [Active Directory] を選択します。
ご使用のディレクトリを選択します。
[アプリケーション] (上部のナビゲーション バーにあります) を選択します。
作成したアプリケーションを開きます。 このトピックの例では、"ContosoAutomobileCollection" です。
次に示す値ごとに、その値の "localhost: port" の部分を新しい Azure Web サイトのドメインに変更します。
たとえば、[アプリ ID URI] が "https://localhost:44304/ContosoAutomobileCollection
" の場合、"https://<my_domain>.azurewebsites.net/ContosoAutomobileCollection
" に変更します。
画面下部にある [保存] を選択します。
アドインを Azure ACS に登録する アドインが SharePoint にアクセスせず、ACS からのトークンを使用しない場合であっても、この手順を実行する必要があります。それは、この同じプロセスで、アドインが Office 365 サブスクリプションのアドイン管理サービスにも登録されるためです。これは必須です (当初 SharePoint アドインは "SharePoint 用アプリ" と呼ばれていたため、"アドイン管理サービス" と呼ばれます)。
登録は Office 365 サブスクリプションの SharePoint Web サイトの AppRegNew.aspx ページで実行します。 詳しくは、「SharePoint アドインを登録する」をご覧ください。
このプロセスの一部として、新しいクライアント ID とクライアント シークレットを取得することになります。 web.config で ClientId (ida:ClientID ではない) と ClientSecret キーにこれらの値を挿入します。
警告
この変更を行った後に、何らかの理由で F5 キーを押した場合、Office Developer Tools for Visual Studio はこれらの値の一方または両方を上書きします。 そのため、AppRegNew.aspx で取得した値の記録を保持しておき、ASP.NET アプリケーションを発行する直前に、web.config のその値が正しいことを常に確認する必要があります。
SharePoint アドインのインストールの詳細については、「SharePoint アドインの展開とインストール: 方法とオプション」を参照してください。
すべてのテストが終了したら、アドインを運用環境に展開できます。 ただし、何らかの変更が必要な場合もあります。
StartPage
AppManifest.xml ファイル内の値を変更AppRedirectUrl
し、SharePoint アドインを再パッケージ化する必要があります。 この記事の前の方にある手順「アプリケーションでコードとマークアップを変更する」を参照してください。ida:ClientID
) とClientSecret
web.configのキーから ClientId
AppRegNew フォームにコピーできます。 新しい値を生成する場合は、必ずweb.configのキーに新しい値 を コピーしてください。ドキュメント
手順 3: SAP からデータを取得するための SharePoint アプリケーションを作成する - BizTalk Server
詳細情報: 手順 3: SAP からデータを取得する SharePoint アプリケーションを作成する
トレーニング
ラーニング パス
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
認定資格
Microsoft Certified: Identity and Access Administrator Associate - Certifications
ID ソリューションの現代化、ハイブリッド ソリューションの実装、ID ガバナンスの実装を行う Microsoft Entra ID の機能を実証します。
events
Microsoft 365 Community Conference
5月6日 14時 - 5月9日 0時
5 月 6 日から 8 日にラスベガスで開催される、コミュニティ主導の究極の Microsoft 365 イベントで AI の時代に向けてスキルアップします。
詳細情報