Builder + App Side-by-Side in Chrome
2025年12月26日金曜日
Google Chromeの分割ビューを使用してアプリケーション・ビルダーとアプリを同じタブに表示する
Builder + App Side-by-Side in Chrome
Gemini Nanoのマルチモーダルに対応したPrompt APIをAPEXのアプリから呼び出してみる
2025年12月23日火曜日
Role based JWT profileで保護したORDS REST APIにアクセスする - Microsoft Entra ID編
以下の記事にそって構築した環境を使用します。
DNSでホスト名の解決ができ、インターネットからアクセス可能なOracle APEXとORDSの実行環境を作成します。Autonomous AI Databaseを使用する場合は、nginxをリバース・プロキシとして実行する環境だけが必要です。
- Oracle APEXの実行環境にnginxによるリバース・プロキシを構成する - Oracle Linux 10編(Ubuntu 24.04 + Dockerでの同等の手順はこちらの記事を参照のこと)
- Oracle APEXの実行環境にnginxによるリバース・プロキシを構成する - 追加手順
SQLclのMCPサーバーのデータベース接続をMicrosoft Entra IDのOAuth2で認証する
SQLclのMCPサーバーのデータベース接続にTOKEN_AUTH=AZURE_INTERACTIVEの設定を使用する
https://apexugj.blogspot.com/2025/08/sqlcl-mcp-with-azure-interactive.html
Microsoft Entra IDの設定
変更後、保存します。
トークン構成を開き、オプションの要求の追加をクリックします。
以上で追加をクリックします。
後ほどサーバー側のアプリケーションORDS MCPへの紐付けに使うため、アプリケーション(クライアント)IDをコピーしておきます。その後に、リダイレクトURIを追加するのリンクを開きます。
https://claude.ai/api/mcp/auth_callback
ORDSおよびnginxの設定
declare
l_roles owa.vc_arr;
l_modules owa.vc_arr;
l_patterns owa.vc_arr;
begin
ords.create_role(
p_role_name => 'ORDSUsers'
);
l_modules(1) := 'sampleserver';
l_roles(1) := 'ORDSUsers';
ords.define_privilege(
p_privilege_name => 'oracle.example.mcp',
p_label => 'Priviledge for MCP',
p_roles => l_roles,
p_modules => l_modules,
p_patterns => l_patterns -- no assignment
);
end;
/[opc@ordsmcp ~]$ sudo -s
[root@ordsmcp opc]#
cd /usr/share/nginx/html
[root@ordsmcp opc]# cd /usr/share/nginx/html
[root@ordsmcp html]#
mkdir .well-known
[root@ordsmcp html]# mkdir .well-known
[root@ordsmcp html]#
{
"resource": "アプリケーションORDS MCPのアプリケーション(クライアント)ID",
"authorization_servers": [
"https://login.microsoftonline.com/テナントID/v2.0"
],
"scopes_supported": ["api://アプリケーションORDS MCPのアプリケーション(クライアント)ID/mcp:connect"]
}
OpenID Connectメタデータドキュメントをダウンロードし、.well-known以下にoauth-authorization-serverとして配置します。
curl -L -o .well-known/oauth-authorization-server https://login.microsoftonline.com/********-****-****-****-************/v2.0/.well-known/openid-configuration
[root@ordsmcp html]# curl -L -o .well-known/oauth-authorization-server https://login.microsoftonline.com/3940****-****-****-****-********2758/v2.0/.well-known/openid-configuration
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1965 100 1965 0 0 3470 0 --:--:-- --:--:-- --:--:-- 3471
[root@ordsmcp html]#
#access_log /var/log/nginx/access.log main;
access_log /var/log/nginx/extended.log extended;
#access_log /var/log/nginx/body.log body;
location @ords_401 {
internal;
more_clear_headers 'WWW-Authenticate';
# The same IdP is used for all MCP servers.
#add_header WWW-Authenticate 'Bearer resource_metadata="$scheme://$host/.well-known/oauth-protected-resource"' always;
# scope for Microsoft Entra ID
add_header WWW-Authenticate 'Bearer resource_metadata="$scheme://$host/.well-known/oauth-protected-resource",scope="api://e375****-****-****-****-********6872/mcp:connect"' always;
# “A dedicated IdP is assigned to each MCP server.
#add_header WWW-Authenticate 'Bearer resource_metadata="$scheme://$host/.well-known/oauth-protected-resource$uri"' always;
[root@ordsmcp html]# nginx -s reload
[root@ordsmcp html]#
[root@ordsmcp html]# tail -f /var/log/nginx/extended.log
npx @modelcontextprotocol/inspector
begin
ords_security.delete_jwt_profile;
ords_security.create_jwt_profile(
p_issuer => '属性issの値'
,p_audience => '属性audの値'
,p_jwk_url => '属性jwks_uriの値'
,p_role_claim_name => '/roles'
);
end;
/






































































































